OpenClaw × Telegram & Discord セットアップガイド — ハマりポイントと解決策まとめ
OpenClaw(2026.2.22-2)でTelegramとDiscordのボットを構築した際の手順と、実際にハマったポイントをまとめます。これからセットアップする方の参考になれば。
環境
- macOS(MacBook Air)
- OpenClaw 2026.2.22-2
- モデル:
openrouter/google/gemini-3-flash-preview - Gateway: ローカル(loopback / port 18789)
1. OpenClaw オンボーディング
openclaw onboard
※ openclaw onboardの際に、Quick Startで進むとGatewayの立ち上げが自分はうまくいかなかったので注意。
初回セットアップのポイント:
| 設定項目 | 推奨値 | 備考 |
|---|---|---|
| Gateway bind | Loopback (127.0.0.1) | 自分のマシンだけなら最も安全 |
| Gateway auth | Token | パスワードよりセキュアで自動化と相性◎ |
| Tailscale exposure | Off | Loopback選択時は不要 |
| DM access policy | pairing | デフォルトで安全、後から変更可 |
Hooks の選択
session-memory は有効にしておくと良い。会話の文脈を保持してくれるので応答品質が上がる。
-
boot-md— 起動時にカスタムシステムプロンプトを読み込む(パーソナリティ設定に必須) -
command-logger— コマンド履歴のログ保存 -
bootstrap-extra-files— 起動時に追加ファイルを読み込む
2. Telegram ボットの設定
2.1 BotFather でボット作成
- Telegramで
@BotFatherに/newbotを送信 - 表示名を入力(例:
SuperTask Bot) - ユーザー名を入力(例:
supertask_bot)-
⚠️ スペース不可、末尾に
bot必須 -
SuperTask Bot→ ❌(スペースあり) -
SuperTaskBot→ ✅ -
supertask_bot→ ✅
-
⚠️ スペース不可、末尾に
- 発行されたトークンをメモ
2.2 OpenClaw に設定
~/.openclaw/openclaw.json の channels.telegram を編集:
"telegram": {
"enabled": true,
"botToken": "YOUR_TELEGRAM_BOT_TOKEN",
"dmPolicy": "pairing",
"groupPolicy": "disabled",
"streaming": "off"
}
顧客対応用(誰でもDM可能)にする場合:
"telegram": {
"enabled": true,
"botToken": "YOUR_TELEGRAM_BOT_TOKEN",
"dmPolicy": "open",
"allowFrom": ["*"],
"groupPolicy": "disabled",
"streaming": "off"
}
⚠️ ハマりポイント: dmPolicy: "open" には allowFrom: ["*"] が必須。 これがないとバリデーションエラーでゲートウェイが起動しない。
2.3 ペアリング(pairing モードの場合)
- Telegramでボットにメッセージを送る
- ペアリングコードが返ってくる
- ターミナルで承認:
openclaw pairing approve telegram <ペアリングコード>
2.4 ボットが無反応だった場合
ボットは起動しているのに返答がない場合、Telegram側のwebhookが残っている可能性がある:
# webhookをクリア
curl "https://api.telegram.org/bot<YOUR_TOKEN>/deleteWebhook?drop_pending_updates=true"
# ゲートウェイ再起動
openclaw gateway restart
動作確認コマンド:
# ボット情報確認
curl "https://api.telegram.org/bot<YOUR_TOKEN>/getMe"
# 受信メッセージ確認(ゲートウェイ停止中に実行)
curl "https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates"
3. ボットのパーソナリティ設定(boot.md)
boot-md hookを有効にした上で、ワークスペースにマークダウンファイルを作成:
nano ~/.openclaw/workspace/boot.md
例:
# SuperTask Bot
あなたはSuperTaskIncの公式AIアシスタントです。
## 会社について
- SuperTaskIncはタスク自動化と業務効率化のソリューションを提供する会社
- 最新のAI技術を活用して、チームの生産性向上を支援
## パーソナリティ
- 温かくフレンドリーだが、プロフェッショナル
- 日本語と英語の両方で対応可能
## トーン
- 絵文字は控えめに使用
- 専門用語は噛み砕いて説明
⚠️ ハマりポイント: boot.md を作成・変更した後、既存のセッションには反映されない。 Telegramで /reset または /new を送信してセッションをリセットする必要がある。
4. Discord ボットの設定
4.1 Discord Developer Portal でボット作成
- https://discord.com/developers/applications → New Application
- Bot → ユーザー名を設定
-
Privileged Gateway Intents で以下を有効化:
- ✅ Message Content Intent(必須)
- ✅ Server Members Intent(推奨)
- Presence Intent(任意)
- Reset Token でトークンを取得
-
OAuth2 → URL Generator:
- Scopes:
bot,applications.commands - Permissions:
View Channels,Send Messages,Read Message History,Embed Links,Attach Files
- Scopes:
- 生成されたURLでボットをサーバーに招待
4.2 OpenClaw にトークンを設定
openclaw config set channels.discord.token '"YOUR_DISCORD_BOT_TOKEN"' --json
openclaw config set channels.discord.enabled true --json
⚠️ 超重要ハマりポイント: --json フラグ必須。 これがないと Unrecognized key: "botToken" エラーになる。Telegramでは botToken、Discordでは token とキー名が異なる点にも注意。
4.3 プラグインの有効化(最大のハマりポイント)
⚠️ config だけ設定してもDiscordは動かない。プラグインも有効にする必要がある。
openclaw config set plugins.entries.discord.enabled true --json
または openclaw.json の plugins セクションに追加:
"plugins": {
"entries": {
"telegram": {
"enabled": true
},
"discord": {
"enabled": true
}
}
}
なぜこうなるのか?
OpenClawはプラグインアーキテクチャを採用しており、channels(接続設定)と plugins(プロトコルドライバ)が分離されている。Telegramはオンボーディング時に自動でプラグインも有効化されるが、後からDiscordを追加する場合はプラグインを手動で有効化する必要がある。
4.4 ゲートウェイ再起動 & ペアリング
kill $(lsof -ti:18789) 2>/dev/null; sleep 2; openclaw gateway
DiscordでボットにDMを送信 → ペアリングコードが返ってくる:
openclaw pairing approve discord <ペアリングコード>
5. ゲートウェイ運用Tips
バックグラウンド実行
# launchctlサービスとして登録(推奨)
openclaw gateway install
openclaw gateway start
# または nohup で実行
nohup openclaw gateway &> /tmp/openclaw-gateway.log &
よく使うコマンド
# ログ確認
openclaw logs --tail 50
# ヘルスチェック
openclaw doctor
openclaw doctor --fix
# チャンネル状態確認
openclaw channels status --probe
# ゲートウェイ停止
openclaw gateway stop
# プロセスが残っている場合
kill $(lsof -ti:18789)
ゲートウェイが起動しない場合
Gateway failed to start: gateway already running (pid XXXXX)
→ 古いプロセスが残っている。kill <PID> で停止してから再起動。
Gateway service not loaded.
→ openclaw gateway install を実行するか、openclaw gateway(フォアグラウンド)で起動。
6. セキュリティ注意事項
-
トークンは絶対にチャットやコードに貼らない(貼ってしまった場合は即
/revoke(Telegram)または Reset Token(Discord)で再発行) -
dmPolicy: "open"は顧客対応用。個人用はpairingを推奨 - 定期的に
openclaw security audit --deepを実行
まとめ
| ハマりポイント | 原因 | 解決策 |
|---|---|---|
dmPolicy: "open" でエラー |
allowFrom 未設定 |
"allowFrom": ["*"] を追加 |
| Telegramボットが無反応 | webhook残留 or セッション未承認 |
deleteWebhook + pairing approve
|
| boot.md が反映されない | 既存セッション |
/reset でセッションリセット |
| Discord設定しても動かない | プラグイン未有効化 | plugins.entries.discord.enabled: true |
| config set でエラー |
--json フラグ忘れ / キー名違い |
--json 付与、Discord は token(botToken ではない) |
| ゲートウェイ起動不可 | 古いプロセス残留 | kill $(lsof -ti:18789) |
OpenClawはまだベータで粗い部分があるが、Telegram・Discord両対応のAIボットを自前で運用できるのは強力。特にプラグイン有効化の罠は公式ドキュメントにも明記が薄いので要注意。
