質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1010閲覧

Discord.jsのPermissionsがエラーも出さず弾かれる

satoimo_satosi

総合スコア2

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2023/02/22 08:01

編集2023/02/22 08:05

実現したいこと

  • 管理者のみ使用可能なスラッシュコマンドを作りたい

前提

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

普通に管理者権限を持ってたら弾かれる設定にしてました。
ミスでした。すいません

投稿2023/02/22 08:53

satoimo_satosi

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問