Discord ボット開発の実践的な側面に踏み込みます。
このチャプターでは、Discord ボットアカウントの作成とキーの安全な管理方法を説明します。
これらのキーを Skeet ベースのサーバーレス環境に組み込むことで、セキュアかつ効率的なボットの展開を実現します。
Discord ボットアカウントの作成
Discord ボットアカウントを作成するには
にアクセスし、アプリケーションを作成します。
そして General Information から
DISCORD_PUBKEY
DISCORD_APPLICATION_ID
をメモしておきます。後ほど config.ts
に設定します。
次に Bot ページに移動し、Reset Token をクリックして、トークンを生成します。
DISCORD_TOKEN
トークンをメモしておきます。
続いて Privileged Gateway Intents を有効にします。
- PRESENCE INTENT
- SERVER MEMBERS INTENT
- MESSAGE CONTENT INTENT
を有効にします。
Discort ボットをサーバーに追加する
以下の URL にアクセスし、Discord ボットをサーバーに追加します。
DISCORD_APPLICATION_ID
を上記でメモした値に置き換えてください。
https://discord.com/api/oauth2/authorize?client_id=<DISCORD_APPLICATION_ID>&permissions=8&scope=bot%20applications.commands
追加するサーバーを選択し、追加ボタンをクリックします。
これで Discord ボットがサーバーに追加されました。
🗝️ Skeet プロジェクトに秘密鍵を追加する 🛡️
Skeet プロジェクトでセキュアなデータ管理を実現するため、skeet add secret
コマンドを使って、重要なキーを Google Cloud の Cloud Secret Manager に安全に追加しましょう。このプロセスにより、機密情報の安全な保管とアクセス管理が可能となります。
DISCORD_TOKEN
の追加
$ skeet add secret DISCORD_TOKEN
? Enter value for DISCORD_TOKEN: <YOUR-DISCORD_TOKEN>
Skeet Framework では、.env
ファイルを使用せずにセキュリティを保ちます。これにより、Google Cloud の IAM の権限ベースでアクセスをコントロールし、チーム間での .env
ファイルの共有の必要性を排除します。このアプローチは、プロジェクトのセキュリティを強化すると同時に、開発チームの作業効率を向上させます。
Firebase の公式ドキュメントにも記載されているように、Cloud Secret Manager を利用することで、アプリケーションの構成情報をより安全に、かつ効率的に管理することができます。
定数を config.ts に設定する
functions/skeet/lib/config.ts
に以下の定数を設定します。
import { dotenv } from '@skeet-framework/utils'
dotenv.config()
const NODE_ENV = process.env.NODE_ENV || 'development'
// Discord
export const DISCORD_PUBKEY = 'Your Discord Pubkey'
export const DISCORD_APPLICATION_ID = 'Your Discord Application ID'
export const DISCORD_GUILD_ID = 'Your Discord Guild ID'
export const config = {
NODE_ENV,
}
DISCORD_GUILD_ID
は Discord サーバーのアイコンを右クリックすることで、サーバー ID を取得できます。
次の章では、設定したキーを使って、Discord ボットを実際に動かしてみましょう。