記事内に広告が含まれています

【Discord.js】特定のワードに反応するBot

テクノロジー
この記事は約3分で読めます。

こんにちはっ!
今回は、特定のワードに反応するBotをdiscord.jsで作っていこうと思います。

スポンサーリンク

Discord Botの作り方

こちらの記事にて詳しく説明しています!
わからないという方はこちらを先にお読みください。

サルでもわかる Discord Botの作り方

サルでもわかる Discord Botの作り方をゼロから説明していくシリーズです。

コード

コードは非常に短いです。

const { Client, GatewayIntentBits } = require('discord.js');

const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMessages] });

client.login("<BotのToken>");

client.on('ready', () => {
    console.log(`${client.user.tag}`);
});

client.on('messageCreate', message => {
    if (message.author.bot) return;
    if (message.content.includes('<反応するワード>')) {
        message.channel.send('<Botが返す文章>');
    }
});
const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MEMBERS] });

client.login("<BotのToken>");

client.on('ready', () => {
    console.log(`${client.user.tag}`);
});

client.on('messageCreate', message => {
    if (message.author.bot) return;
    if (message.content.includes('<反応するワード>')) {
        message.channel.send('<Botが返す文章>');
    }
});

以下のようにワードと文章を設定するとこのようになります。
<反応するワード> : なりかくん
<Botが返す文章> : なりかくんのブログを見ましょうね!

するとこのようになります。
しっかりと、”なりかくん”にだけ反応するBotになってますね!

終わりですっ!

コメント

  1. 失礼します。文を送るコードをコピーしてメッセージを送っても反応しません。特にターミナルやデバッグコンソールではエラーメッセージは無いです。
    client.on(‘message’, message=> {
    if (message.content ===’○○’) {
    message.channel.send (‘○○’);
    }
    });
    v 13じゃ無理とかですかね、、?

    • こんにちは、イベントが間違っています。
      messageイベントではなく現在はmessageCreateイベントを利用する必要があります。また、インテントを有効化しているかも確認してみてください。

  2. こちらの他にも入門のブログも拝見させていただきました。
    入門編のサーバへの「指定したチャンネルにこのように参加通知メッセージ」は正常に稼働したのですが、こちらのコードもエラーは出ませんが、設定した文字列をdiscordで入力しても返ってきません。
    こちらどのような原因が考えられるでしょうか。

    • 当ブログをご覧いただきありがとうございます。
      考えられる原因としましては、特権インテントを有効にしていない。またはインテントの指定が間違っている可能性があります。
      そちらのご確認をよろしくお願い致します。

      • 早速ご返答いただきありがとうございます。
        インテントにつきまして、「SERVER MEMBERS INTENT」のみ有効化となっていたので下記の3つをすべて有効にしましたがやはり反応せず、、

        PRESENCE INTENT
        SERVER MEMBERS INTENT
        MESSAGE CONTENT INTENT

        また、botの権限も管理者権限を与えています。
        他に何か考えられる要因はありますでしょうか。

      • ソースコード内のintentsにてGatewayIntentBits.GuildMessagesが正しく指定されているかご確認いただけますか?
        よろしくお願い致します。

  3. 特定の文字を含むメッセージにリプライするようにはどのようにすればよいですか?

    • 当ブログを御覧いただきありがとうございます。
      message.channel.send('');message.reply(''); にしていただくことでリプライに変更が可能です。

タイトルとURLをコピーしました