【Discord】@everyoneに反応しないようする【BOT】

趣味でDiscordのチャットボットを作ってみました。

ボット宛のメンションでのみ動くようにしたかったのですが、@everyoneでも反応してしまっていたので、調べてみました。

準備編

Discord Botの作成には、こちらのnoteを参考にさせていただきました。ですので、discord.js v11での作成になります。

誰でも作れる!Discord Bot(基礎編)

以下三点を読み替えて作成しました。

・「2. Glitchでサーバーを作成」にて作成するプロジェクトを「hello-express」→「glitch-hello-node」に置き換える

・「package.js」と「server.js」のみ残す。

・「.env」ファイルが見つからなかったため、Filesから自分で作成しました。

isMentionedとisMemberMentionedについて調査

元コードの以下の部分がメンションで反応する部分になります。

if(message.isMemberMentioned(client.user)){

isMentionedとisMemberMentionedのマニュアルは

isMentioned

isMemberMentioned

それぞれ翻訳かけると

isMentioned

このメッセージにユーザー、チャネル、または役割が記載されているかどうか。

isMemberMentioned

このメッセージにギルドメンバーが記載されているかどうか。ユーザーの言及、役割の言及、および@ everyone /@hereの言及を考慮に入れます。

「@ everyone /@hereの言及を考慮に入れます。」というのがうまく翻訳が正しいのかわかりませんが、とりあえず以下のように解釈しました。

isMentioned:@everyoneに反応しない

isMemberMentioned:@everyoneに反応する

とりあえず動いているコード

isMemberMentionedからisMentionedに置き換えて使っています。これで@everyoneに反応しないボットになっています。

  /*if(message.isMemberMentioned(client.user)){*/
  if(message.isMentioned(client.user)){

Leave a Reply

Your email address will not be published.

CAPTCHA