Discord APIとは
Discord APIはゲーミングコミュニティから出発し、今やビジネス・クリエイター・開発者コミュニティまで幅広く使われているDiscordのサービスをプログラムから操作するためのAPIです。コミュニティ管理の自動化・ゲームの統計表示・音楽再生ボット・オープンソースプロジェクトのサポートチャンネルなど多様な用途に使われています。
Discordボット作成の手順
- Discord Developer Portal(discord.com/developers/applications)でアプリケーションを作成
- 「Bot」タブでボットユーザーを追加しトークンを取得
- 必要なIntents(メッセージ内容・メンバー情報等)を有効化
- OAuth2 URLを生成してサーバーにボットを招待
- discord.jsをインストールしてコードを書く
discord.js v14 基本実装
import { Client, GatewayIntentBits, Events } from 'discord.js';
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent
]
});
client.once(Events.ClientReady, (c) => {
console.log(`ログイン完了: ${c.user.tag}`);
});
client.on(Events.MessageCreate, async (message) => {
if (message.author.bot) return;
if (message.content === '!ping') {
await message.reply('Pong!');
}
});
client.login(process.env.DISCORD_BOT_TOKEN);
Slash Commands(スラッシュコマンド)の実装
Slash Commandsはユーザーが「/コマンド名」と入力して実行するインタラクションです。v14以降ではSlash Commandsがメインの実装方式です。コマンドの定義はDiscordに登録しておく必要があります。
Embed(リッチメッセージ)
Embedを使うと、タイトル・説明・フィールド・画像・フッターを持つカラフルなカード型メッセージを送れます。ゲームのスコア表示・コマンドヘルプ・お知らせなどに活用されます。
ロール・チャンネル管理
Discord APIを使えば、特定の条件を満たしたユーザーにロールを自動付与・削除できます。
- リアクションロール:特定の絵文字にリアクションするとロールが付与される
- 入会時の自動ロール付与:サーバー参加時に「メンバー」ロールを自動付与
- Bot対策:CAPTCHA通過後にロールを付与
音声チャンネル(Voice)
discord.jsと@discordjs/voiceパッケージを使うと、音声チャンネルに参加してオーディオを再生できます。YouTube音楽再生ボット・効果音ボット・AI音声読み上げボットなどが実装できます。
Webhook通知
外部サービスからDiscordチャンネルに通知を送るにはDiscord Webhookを使うのが最もシンプルです。GitHubのコミット・CIパイプライン・障害アラートなどを通知できます。Discord Webhookのエンドポイントに向けてPOSTリクエストを送るだけです。
まとめ
Discord APIとdiscord.jsを使うことで、コミュニティ管理の自動化から機能豊富なボットの開発まで幅広いユースケースに対応できます。特にゲームコミュニティ・開発者コミュニティ・NFT/クリプトプロジェクトなどでDiscordは中心的なコミュニティツールとなっており、ボット開発のスキルは非常に実用的です。