結論から言うと、プログラミング知識ゼロでも「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の「魂」となるアカウントを作成します。
- Discord Developer Portal にアクセスし、ログインします。
- 右上の [New Application] をクリックし、Botの名前(例:
TestBot)を入力して [Create] を押します。 - 左メニューの [Bot] を選択し、[Reset Token] をクリックして「Token(パスワード)」をコピーします。
- 重要: このTokenは絶対に他人に教えないでください。
- 【最重要】 同じ画面を下にスクロールし、「Message Content Intent」 のスイッチを ON にして [Save Changes] を押します。
- ※これを忘れると、Botはユーザーのメッセージを読み取れず、返信できません。
実践編Lv.1:まずは「Hello」と送ってみる (Webhook)
Bot作成の第一歩として、GASからDiscordにメッセージを一方的に送るテストを行います。
- Discordのサーバー設定から [連携サービス] → [ウェブフックを作成] を選択。
- 「ウェブフックURL」をコピーします。
- ブラウザで以下のURLを開き、新規スクリプトを作成します:
script.google.com - 以下のコードをコピペし、
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. スプレッドシートの準備
- 新規Googleスプレッドシートを作成します。
- シート名を「Config」に変更します。
- **A列に「キーワード」、B列に「返信内容」**を入力します。
- 例: A2「おはよう」 / B2「おはようございます!今日も頑張りましょう!」
2. GASの設定(スクリプトプロパティ)
コード内に直接パスワードを書くのは危険なため、GASの安全な保管場所を使います。
- GASの画面左側にある [歯車アイコン(プロジェクトの設定)] をクリック。
- 最下部の [スクリプト プロパティ] に以下を追加して保存します。
- プロパティ:
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作りを楽しんでください!