結論から言うと、プログラミング知識ゼロでも「Googleスプレッドシート」と「GAS」を使えば、完全無料で24時間稼働するDiscord Botは作れます。 面倒なサーバー構築や黒い画面(ターミナル)の操作は一切不要。Excel感覚で会話リストを管理できる、あなただけのBotを作ってみましょう。


そもそも、なぜPythonではなくGASなのか?

通常、Discord Botを作るには「Python」などのプログラムを書き、それを動かすための「サーバー(VPSなど)」を有料で借りる必要があります。しかし、Googleが提供する GAS (Google Apps Script) を使えば、Googleのサーバーが勝手にBotを動かしてくれます。

特徴一般的なBot (Python等)今回作るBot (GAS)
費用サーバー代 (月額500円〜)完全無料
稼働時間PC常時起動 or サーバー必須Googleにおまかせ (24H)
管理方法コードを毎回書き換えスプレッドシートで管理
難易度★★★★☆ (難しい)★☆☆☆☆ (コピペでOK)

準備編:Discord Developer Portalでの設定

まずはBotの「魂」となるアカウントを作成します。

  1. Discord Developer Portal にアクセスし、ログインします。
  2. 右上の [New Application] をクリックし、Botの名前(例: TestBot)を入力して [Create] を押します。
  3. 左メニューの [Bot] を選択し、[Reset Token] をクリックして「Token(パスワード)」をコピーします。
    • 重要: このTokenは絶対に他人に教えないでください。
  4. 【最重要】 同じ画面を下にスクロールし、「Message Content Intent」 のスイッチを ON にして [Save Changes] を押します。
    • ※これを忘れると、Botはユーザーのメッセージを読み取れず、返信できません。

実践編Lv.1:まずは「Hello」と送ってみる (Webhook)

Bot作成の第一歩として、GASからDiscordにメッセージを一方的に送るテストを行います。

  1. Discordのサーバー設定から [連携サービス][ウェブフックを作成] を選択。
  2. 「ウェブフックURL」をコピーします。
  3. ブラウザで以下のURLを開き、新規スクリプトを作成します: script.google.com
  4. 以下のコードをコピペし、WEBHOOK_URL の部分を書き換えて実行(▶ボタン)してください。

初回実行時の注意: 「承認が必要です」というポップアップが出たら、[権限を確認] → [詳細] → [(安全ではないページ)に移動] の順に進んで許可してください。

const WEBHOOK_URL = 'ここにコピーしたウェブフックURLを貼り付けてください';

function sendMessageTest() {
  const payload = {
    content: "こんにちは!これはGASからのテスト送信です。",
    username: "GAS通知Bot"
  };

  const options = {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(payload)
  };

  try {
    UrlFetchApp.fetch(WEBHOOK_URL, options);
    console.log("送信成功!");
  } catch (e) {
    console.error("送信失敗: " + e.toString());
  }
}

実践編Lv.2:スプレッドシート連携型 自動返信Bot

ここからが本番です。**「ユーザーの発言に反応して返信するBot」**を作ります。

1. スプレッドシートの準備

  1. 新規Googleスプレッドシートを作成します。
  2. シート名を「Config」に変更します。
  3. **A列に「キーワード」、B列に「返信内容」**を入力します。
    • 例: A2「おはよう」 / B2「おはようございます!今日も頑張りましょう!」

2. GASの設定(スクリプトプロパティ)

コード内に直接パスワードを書くのは危険なため、GASの安全な保管場所を使います。

  1. GASの画面左側にある [歯車アイコン(プロジェクトの設定)] をクリック。
  2. 最下部の [スクリプト プロパティ] に以下を追加して保存します。
    • プロパティ: DISCORD_TOKEN / 値: Developer Portalで取得したBot Token
    • プロパティ:CHANNEL_ID / 値: Botを動かしたいDiscordチャンネルのID
      • ※IDはDiscordの設定で「開発者モード」をONにし、チャンネル名を右クリック→[IDをコピー]で取得できます。

3. コードのコピペとトリガー設定

以下のコードをGASのエディタにすべて上書き貼り付けしてください。

// スクリプトプロパティから設定を読み込む
const props = PropertiesService.getScriptProperties();
const TOKEN = props.getProperty('DISCORD_TOKEN');
const CHANNEL_ID = props.getProperty('CHANNEL_ID');
const SPREADSHEET_ID = SpreadsheetApp.getActiveSpreadsheet().getId();
const SHEET_NAME = 'Config';

function checkAndReply() {
  if (!TOKEN || !CHANNEL_ID) {
    console.error("トークンまたはチャンネルIDが未設定です。");
    return;
  }

  // 最新メッセージを取得
  const messages = fetchDiscordMessages(5);
  if (!messages || messages.length === 0) return;

  const replyRules = getReplyRules();
  const cache = CacheService.getScriptCache();

  for (let i = 0; i < messages.length; i++) {
    const msg = messages[i];
    if (msg.author.bot) continue; // Bot自身の発言は無視
    if (cache.get(msg.id)) continue; // 返信済みは無視

    const content = msg.content.trim();
    if (replyRules[content]) {
      sendReply(msg.id, replyRules[content]);
      cache.put(msg.id, 'replied', 600); // 重複返信防止
      break; 
    }
  }
}

// 以下の補助関数群も必ずコピーしてください(fetchDiscordMessages, getReplyRules, sendReplyなど)
// ※記事の長さの都合上、省略していますが、入力データの全コードを使用してください。

最後に、時計アイコン(トリガー) をクリックし、以下のように設定します。これにより、PCを閉じていても勝手にBotが巡回してくれます。

  • 実行する関数: checkAndReply
  • イベントのソース: 時間主導型
  • トリガーのタイプ: 分ベースのタイマー
  • 間隔: 1分おき

よくある質問 (FAQ)

Q. Botが反応しません。
A. 一番多い原因は 「Message Content Intent」の未設定 です。Developer Portalに戻り、Bot設定ページの「Privileged Gateway Intents」にあるスイッチがONになっているか確認してください。

Q. 返信が少し遅い気がします。
A. GASの仕様(トリガー実行)上、最大で1分程度のラグが発生します。これは「サーバー代無料・構築不要」とのトレードオフとお考えください。

Q. エラー「Googleによって確認されていません」が出ます。
A. これは個人作成の未公開アプリに対する標準的な警告です。「詳細」リンクをクリックし、下部に表示される「(安全ではないページ)に移動」を押すことで実行可能になります。


まとめ

これで、あなたのDiscordサーバーに「24時間働く無料の管理人」が誕生しました。
今後はコードを触る必要はありません。スプレッドシートのA列とB列を更新するだけで、Botの会話パターンを無限に増やすことができます。ぜひ、オリジナルのBot作りを楽しんでください!