GASを使って簡単!Discordの自動返信Botを作成する方法

Discordの自動返信Botを作成したいんだ。でもGASなんて初めてで何から始めればいいのか…
猫男
猫男
catman
catman
任せてくれ。catmanがDiscordの自動返信BotをGASで作る手順を教えてやろう!

必要な準備

Discordの自動返信Botを作るために、まずは必要な準備を整えましょう。今回はGASを用いて、簡単にボットを作成します。

1. Discordアプリでボットを作成

ここでは、Discord Developer Portalを使用してBotを作成します。

  1. Discord Developer Portalにアクセスし、新しいアプリケーションを作成します。
  2. 「Bot」タブで、「Add Bot」をクリックしてボットを作成します。
  3. トークンが表示されるので、メモしておきます。これは後でGASに設定します。

このボットを実際に作成した後、Discordのサーバーにボットを追加しておく必要があります。

2. GASプロジェクトを作成

次に、Google Apps Script(略してGAS)のプロジェクトを作成します。

  1. Googleドライブを開き、新しい「Google Apps Script」プロジェクトを作成します。
  2. プロジェクト名は「DiscordBot」など、わかりやすい名前に設定します。

 

GASでDiscord自動返信Botを作成

GASを使って、Discordで動作する自動返信Botを作成していきましょう。

1. スクリプトを記入する

自動返信BotのコードをGASに書きましょう。

const DISCORD_TOKEN = 'YOUR_DISCORD_TOKEN_HERE';

function doPost(e) {
  const input = JSON.parse(e.postData.contents);
  
  if (input.t === 'MESSAGE_CREATE') {
    const message = input.d.content;
    
    if (message === 'こんにちは') {
      sendReply(input.d.channel_id, 'こんにちは!');
    }
  }
}

function sendReply(channelId, text) {
  const url = 'https://discord.com/api/channels/' + channelId + '/messages';
  const options = {
    method: 'post',
    headers: {
      'Authorization': 'Bot ' + DISCORD_TOKEN,
      'Content-Type': 'application/json'
    },
    payload: JSON.stringify({ content: text })
  };
  
  UrlFetchApp.fetch(url, options);
}

このスクリプトがボットの基礎を構成します。Discordのイベントをキャッチし、特定のメッセージに対して返信を行います。

 

2. GASでスクリプトを実行設定

このコードを正確に動作させるために、GASのトリガーを設定します。

  1. スクリプトエディタで「トリガー」を開き、新しいトリガーを設定します。
  2. 「doPost」を選び、イベントソースを「ウェブアプリケーションとして公開」に設定します。

上記のトリガー設定を正しく行うことで、Discordのイベントを取得し、Botが自動返信を行う仕組みが機能します。

実装のまとめ

  • Discord Developer Portalでボットを作成し、トークンを取得しました。
  • Google Apps Scriptでプロジェクトを作成し、スクリプトを書きました。
  • トリガーをGASに設定し、自動返信ができる環境を整えました。

これで、基本的なDiscordの自動返信Botが完成しました。このBotは、特定の条件に応じて自動でメッセージを返信することが可能になります。

 

練習問題

次のスクリプトが動作するように、何を設定する必要があるでしょうか。考えてみてください。

  • 二つ以上の異なるキーワードに対して異なる返信を行うには、どのようにスクリプトを変更する必要があるでしょうか。

 
 

解答と解説

以下のスクリプトで、複数のキーワード「おはよう」「こんばんは」に対して、それぞれ異なる返信を設定しました。

const DISCORD_TOKEN = 'YOUR_DISCORD_TOKEN_HERE';

function doPost(e) {
  const input = JSON.parse(e.postData.contents);
  
  if (input.t === 'MESSAGE_CREATE') {
    const message = input.d.content;
    
    if (message === 'こんにちは') {
      sendReply(input.d.channel_id, 'こんにちは!');
    } else if (message === 'おはよう') {
      sendReply(input.d.channel_id, 'おはようございます!');
    } else if (message === 'こんばんは') {
      sendReply(input.d.channel_id, 'こんばんは!');
    }
  }
}

function sendReply(channelId, text) {
  const url = 'https://discord.com/api/channels/' + channelId + '/messages';
  const options = {
    method: 'post',
    headers: {
      'Authorization': 'Bot ' + DISCORD_TOKEN,
      'Content-Type': 'application/json'
    },
    payload: JSON.stringify({ content: text })
  };

  UrlFetchApp.fetch(url, options);
}

このスクリプトでは、メッセージ内容の条件分岐を追加し、異なるメッセージに対してそれぞれの返信を設定しています。このように条件分岐(if文)を使用すれば、さまざまな自動返信Botを構築することができます。

しっかりと設定とコードを書き込み、トリガーやAPIの設定を正確に行うことで、Botの動作を確認することができるはずです。ぜひ、いろいろ試してみてください!

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。