Q&A
実現したいこと
- 管理者のみ使用可能なスラッシュコマンドを作りたい
前提
Discordでウェルカムメッセージを設定しようとしています。
管理者のみコマンドを実行できるように設定したらエラーも出さず弾かれました。(パーミッションがない場合のメッセージを返してくる)
該当のソースコード
javascript
1const { 2 Client, 3 EmbedBuilder, 4 Collection, 5 GatewayIntentBits, 6 ActivityType, 7 Events, 8 SlashCommandBuilder, 9 PermissionsBitField 10} = require("discord.js"); 11const client = new Client({ 12 intents: [ 13 GatewayIntentBits.Guilds, 14 GatewayIntentBits.GuildMembers, 15 GatewayIntentBits.GuildMessages, 16 GatewayIntentBits.MessageContent 17 ] 18}); 19const { 20 QuickDB 21} = require("quick.db"); 22const db = new QuickDB(); 23module.exports = { 24 data: new SlashCommandBuilder().setName('test').setDescription("テストコマンド") 25 26//スラッシュコマンドの設定 27 28 async execute(interaction, message) { 29 const subcommand = interaction.options.getSubcommand(); 30 if (subcommand === 'welcome') { 31 if (interaction.member.permissions.has("ADMINISTRATOR")) { 32 return await interaction.reply({ 33 content: "管理者以外は実行できません。", 34 ephemeral: true 35 }) 36 }; 37 if (await db.get(`welchannel_${interaction.guild.id}`.channel.id)) { 38 await db.delete(`welchannel_${interaction.guild.id}`.channel.id); 39 await interaction.reply("チャンネル設定を上書きしました。") 40 } else { 41 return; 42 } 43 if (await db.get(`welmessages_${interaction.guild.id}`.messages)) { 44 await db.delete(`welmessages_${interaction.guild.id}`.messages); 45 await interaction.reply("メッセージ設定を上書きしました。") 46 } else { 47 return; 48 } 49 if (await db.get(`welDm_${interaction.guild.id}`.Dm)) { 50 await db.delete(`welDm_${interaction.guild.id}`.Dm); 51 await interaction.reply("DM設定を上書きしました。") 52 } else { 53 return; 54 } 55 const channel = interaction.options.getChannel("welcome_channel") 56 const messages = interaction.options.getString("welcome_message") 57 const Dm = interaction.options.getString("welcome_dm") 58 const embed = new EmbedBuilder().setColor(0xFFFFFF).setDescription("ウェルカム設定です。").addField({ 59 name: "送信するチャンネル", 60 value: `${channel}` 61 }, { 62 name: "送信するメッセージ", 63 value: `${messages}` 64 }, { 65 name: "Dmを送信するか", 66 value: `${Dm}` 67 }, ) 68 await db.set(`welchannel_${interaction.guild.id}`, channel.id) 69 await db.set(`welmessage_${interaction.guild.id}`, messages) 70 await db.set(`welDm_${interaction.guild.id}`, Dm) 71 await interaction.reply({ 72 embeds: { 73 embed 74 } 75 }) 76 } 77 }; 78} 79};
結果
「管理者以外は実行できません。」と返ってくる(エラーログはなし)
試したこと
- 管理者権限のあるロールを付与した→駄目
- BOTを入れ直した→駄目
補足情報(FW/ツールのバージョンなど)
node.js v16.x
discord.js v14.7.0
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。