実現したいこと
前提
Discordでウェルカムメッセージを設定しようとしています。
管理者のみコマンドを実行できるように設定したらエラーも出さず弾かれました。(パーミッションがない場合のメッセージを返してくる)
該当のソースコード
javascript
1const {2 Client,3 EmbedBuilder,4 Collection,5 GatewayIntentBits,6 ActivityType,7 Events,8 SlashCommandBuilder,9 PermissionsBitField10} = require("discord.js");11const client = new Client({12 intents: [13 GatewayIntentBits.Guilds,14 GatewayIntentBits.GuildMembers,15 GatewayIntentBits.GuildMessages,16 GatewayIntentBits.MessageContent17 ]18});19const {20 QuickDB21} = 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: true35 })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

0 コメント