はじめに
Discord は世界で最も人気のあるコミュニティコミュニケーションプラットフォームの一つです。OpenClaw を Discord に接続することで、サーバー内にインテリジェントな AI アシスタントをデプロイし、コミュニティメンバーに即座にサポートを提供できます。本記事では、Discord Bot の作成から OpenClaw への接続まで、ゼロから完全な手順をご説明します。
前提条件
開始する前に、以下を確認してください。
- OpenClaw がインストール済みで正常に稼働中(
openclaw up) - Discord アカウントを所有していること
- 対象 Discord サーバーの管理者権限を持っていること
ステップ1:Discord アプリケーションと Bot の作成
1.1 開発者ポータルにアクセス
Discord Developer Portal にアクセスし、Discord アカウントでログインします。
1.2 新しいアプリケーションを作成
- 右上の New Application ボタンをクリック
- アプリケーション名を入力(例:「OpenClaw Assistant」)
- 開発者サービス利用規約に同意
- Create をクリック
1.3 Bot を作成
- 左側メニューで Bot をクリック
- Add Bot をクリックし、作成を確認
- Bot 設定ページで:
- Bot のアバターとユーザー名を設定
- Reset Token をクリックして Bot Token を取得
- Token を安全に保存してください(後の設定で必要です)
注意:Bot Token は機密情報です。漏洩させたり、公開リポジトリにコミットしたりしないでください。
万が一漏洩した場合は、開発者ポータルですぐに Token をリセットしてください。
1.4 Privileged Intents の設定
Bot 設定ページの下部で、以下の Privileged Gateway Intents を有効にする必要があります。
| Intent | 説明 | 必須かどうか |
|---|---|---|
| Presence Intent | メンバーのオンライン状態を検出 | 任意 |
| Server Members Intent | メンバーリストの取得 | 任意 |
| Message Content Intent | メッセージ内容の読み取り | 必須 |
Message Content Intent は必ず有効にしてください。有効にしないと、Bot はユーザーが送信したメッセージの内容を読み取ることができません。
ステップ2:Bot をサーバーに招待
2.1 招待リンクの生成
左側メニューで OAuth2 → URL Generator をクリックします。
- Scopes で
botとapplications.commandsにチェック - Bot Permissions で以下の権限にチェック:
必要な権限リスト:
├── Send Messages - メッセージの送信
├── Send Messages in Threads - スレッドでのメッセージ送信
├── Embed Links - リンクの埋め込み
├── Attach Files - ファイルの添付
├── Read Message History - メッセージ履歴の読み取り
├── Use Slash Commands - スラッシュコマンドの使用
├── Add Reactions - リアクションの追加
└── Manage Messages - メッセージの管理(任意、自身のメッセージ撤回用)
- 生成された URL をコピー
2.2 サーバーに招待
- ブラウザで前のステップでコピーした URL を開く
- Bot を追加するサーバーを選択
- 権限を確認し、Authorize をクリック
- CAPTCHA 認証を完了
招待が成功すると、Bot がサーバーのメンバーリストに表示されます(OpenClaw にまだ接続されていないため、オフライン状態で表示されます)。
ステップ3:OpenClaw の設定
3.1 設定ファイルで設定
~/.config/openclaw/openclaw.json5 を編集します。
{
channels: {
discord: {
enabled: true,
// 開発者ポータルから取得した Bot Token
botToken: "MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
// 開発者ポータルの OAuth2 ページから取得
clientId: "123456789012345678",
// トリガー方式の設定
trigger: {
// @Bot が必要かどうか(false の場合すべてのメッセージに返信)
mentionRequired: true,
// カスタムトリガープレフィックス(任意)
prefix: "!ask",
// DM に応答するかどうか
dmEnabled: true
},
// 返信設定
reply: {
// Embed 形式で返信するかどうか
useEmbed: true,
// Embed の色(16進数)
embedColor: "#5865F2",
// スレッドでの自動フォロー返信
threadReply: true,
// 長いメッセージの自動分割文字数
maxLength: 2000
}
}
}
}
3.2 環境変数で設定
export DISCORD_BOT_TOKEN="MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.XXXXXX.XXXX"
export DISCORD_CLIENT_ID="123456789012345678"
3.3 サービスの再起動
設定完了後、OpenClaw を再起動します。
openclaw restart
ログで接続状態を確認します。
openclaw logs -f --component channel:discord
接続が成功すると、ログに以下が表示されます。
[INFO] [channel:discord] Bot 已登录为 OpenClaw Assistant#1234
[INFO] [channel:discord] 已连接到 3 个服务器
[INFO] [channel:discord] 斜杠命令已注册
ステップ4:スラッシュコマンドの設定
OpenClaw は Discord のスラッシュコマンド(Slash Commands)の登録をサポートしており、ユーザーが / で特定の機能をトリガーできます。
デフォルトのスラッシュコマンド
接続が成功すると、OpenClaw は自動的に以下のスラッシュコマンドを登録します。
| コマンド | 説明 |
|---|---|
/ask <質問> |
AI に質問する |
/model <モデル名> |
現在使用中の AI モデルを切り替え |
/reset |
会話コンテキストをリセット |
/help |
ヘルプ情報を表示 |
カスタムスラッシュコマンド
設定ファイルにカスタムコマンドを追加できます。
{
channels: {
discord: {
// ...その他の設定
slashCommands: [
{
name: "translate",
description: "翻訳文本",
options: [
{
name: "text",
description: "翻訳するテキスト",
type: "STRING",
required: true
},
{
name: "language",
description: "ターゲット言語",
type: "STRING",
required: false,
choices: [
{ name: "中文", value: "zh" },
{ name: "English", value: "en" },
{ name: "日本語", value: "ja" }
]
}
],
// 関連するスキルまたはシステムプロンプト
skill: "translate"
}
]
}
}
}
マルチサーバー設定
Bot が複数の Discord サーバーに招待されている場合、サーバーごとに異なる動作を設定できます。
{
channels: {
discord: {
enabled: true,
botToken: "your-bot-token",
clientId: "your-client-id",
// サーバーレベルの設定
guilds: {
// サーバー ID: 設定
"111111111111111111": {
model: "claude",
systemPrompt: "あなたは技術サポートアシスタントです",
allowedChannels: ["general", "bot-chat"],
trigger: { mentionRequired: false }
},
"222222222222222222": {
model: "gpt-4o",
systemPrompt: "あなたはフレンドリーなチャットパートナーです",
allowedChannels: ["ai-chat"],
trigger: { mentionRequired: true }
}
},
// guilds に設定されていないサーバーはデフォルト設定を使用
defaultGuild: {
model: "claude",
trigger: { mentionRequired: true }
}
}
}
}
サーバー ID の取得方法:Discord で開発者モードを有効にし(設定 → 詳細 → 開発者モード)、サーバーアイコンを右クリック → サーバー ID をコピー。
Embed フォーマット
OpenClaw は返信を Discord Embed としてフォーマットすることをサポートしており、メッセージをより美しく表示できます。
{
channels: {
discord: {
reply: {
useEmbed: true,
embedColor: "#5865F2",
embedFooter: "Powered by OpenClaw",
// コードブロックの自動シンタックスハイライト
codeHighlight: true,
// 長い返信を複数の Embed に自動分割
splitEmbed: true
}
}
}
}
Embed の効果には以下が含まれます。
- カラーサイドバーで AI の返信を識別
- コードブロックのシンタックスハイライト対応
- フッターにモデル名とトークン消費情報を表示
- 超長コンテンツの自動ページネーション表示
トラブルシューティング
Bot がオフライン表示
# Token が正しいか確認
openclaw config get channels.discord.botToken
# ログのエラーメッセージを確認
openclaw logs --level error --component channel:discord
よくある原因:Token が不正、Token の有効期限切れ、ネットワーク接続の問題。
Bot がメッセージに応答しない
# Message Content Intent が有効になっているか確認
# 開発者ポータル → Bot → Privileged Gateway Intents で確認
権限不足エラー
Bot が対象チャンネルでメッセージ送信の権限を持っていることを確認してください。Discord のサーバー設定で Bot ロールの権限設定を確認できます。
まとめ
Discord 連携は OpenClaw で最もよく使用されるチャンネルの一つです。主要な手順の振り返り:
- Discord 開発者ポータルでアプリケーションと Bot を作成
- Message Content Intent を有効化
- 招待リンクを生成してサーバーに招待
- OpenClaw 設定ファイルに Token を入力
- サービスを再起動して接続を確認
デプロイが完了すると、Discord コミュニティに強力な AI アシスタントが加わります。