Google Cloud: Cloud RunでDiscord Bot作る
要件
サーバにジョインできるBot
レポジトリの用意
今回のサンプルプロジェクトです
Discord Application作る
Cloud Run サービスを作る
ビルド構成のビルドタイプは「Google Cloud の Buildpacks を使用」を選ぶ。設定はデフォルトのままでOK DiscordからのリクエストがGoogleのus-east1あたりから来ている様子があるので、リージョンはそれに合わせてus-east1にしておくと良いかもしれない 確信度低
認証の「未認証の呼び出しを許可」を選択しておく
環境変数に、 DISCORD_BOT_TOKEN ・ DISCORD_APPLICATION_ID ・ DISCORD_PUBLIC_KEY を設定しておく .env.example を参考にしてね
サービスを作成したら、サービスのURL( .run.app で終わるやつ)をコピー
Interactions Endpoint URL
Discordのアプリ管理画面に行き、
Interactions Endpoint URLに先ほどコピーしたCloud FunctionsのURLを貼り付け
アプリケーションが正常に動いていないと、リクエストの認証が通らずURLが登録できないので注意
Botの招待
Botの招待は以下のURLを使う
https://discord.com/api/oauth2/authorize?client_id=<appId>&permissions=0&scope=bot%20applications.commands
コマンドリストの更新
招待したばかりの状態だと、コマンドの一覧が登録されておらず、botを叩けない
サービスのURLの /update をクエリに ?guild_id=<guild id> をつけて叩くと、コマンドリストが更新される
コマンドを叩く
Botが発言できるチャンネルで /ping を叩いてみる
https://gyazo.com/6022cc66c84a4b10108faee7a216f0e8
こんな感じで "pong" が帰ってくる
https://gyazo.com/5fc8535061c59b0be261a6d92566731c
オケー
ローカルで開発する
.env.example を参考にしてね
code:sh
npx dotenv-cli npm start