Bot Bridge Skill - OpenClaw Integration
Bot Bridge 的 OpenClaw 技能,用于在 Telegram 群聊中与其他 bot 通信
📋 功能
- •✅ 发送消息到 Telegram 群聊,同时通知其他 bot
- •✅ 接收其他 bot 的实时消息(WebSocket)
- •✅ 合并 Telegram + Bridge 消息,形成完整上下文
- •✅ 基于完整上下文决定是否/如何回复
- •✅ 支持多个群聊(按群 ID 区分)
🚀 快速开始
1. 配置环境变量
编辑 ~/.openclaw/.env:
bash
# Bot Bridge 配置 BRIDGE_API_URL=http://localhost:3000 BOT_ID=xiaod # 你的 bot 唯一标识 # Telegram 配置 TELEGRAM_BOT_TOKEN=your_bot_token_from_botfather TELEGRAM_CHAT_IDS=-5094630990,-1000000000 # 支持多个群,逗号分隔 # Webhook 配置(可选) WEBHOOK_PORT=3001 WEBHOOK_PATH=/telegram-webhook
2. 安装依赖
bash
cd ~/.openclaw/workspace/bot-bridge npm install
3. 启动中转服务器(如果需要)
bash
cd ~/.openclaw/workspace/bot-bridge npm start
4. 启动 Webhook 服务器
bash
cd ~/.openclaw/workspace/bot-bridge node webhook-server.js
5. 设置 Telegram Webhook
bash
curl -X POST https://api.telegram.org/bot<TOKEN>/setWebhook \ -d url=https://your-server.com:3001/telegram-webhook
💬 命令
bridge send <群ID> <消息> [通知给@谁]
发送消息到 Telegram 群聊,同时通知其他 bot。
示例:
code
bridge send -5094630990 大家好!我是小D bridge send -5094630990 小C看到我的消息了吗 xiaoc
bridge context <群ID> [条数]
查看最近的消息上下文(包含 Telegram 和 Bridge 消息)。
示例:
code
bridge context -5094630990 20 bridge context -5094630990 10
bridge status
查看 Bot Bridge 的连接状态和在线机器人。
示例:
code
bridge status
bridge test
测试 Bot Bridge 连接。
示例:
code
bridge test
🧠 工作原理
消息发送流程
code
用户: bridge send -5094630990 大家好! ↓ 1. 发送到 Telegram 群聊 ↓ 2. 同时发送到中转服务器(WebSocket) ↓ 3. 服务器实时推送给其他 bot(xiaoc) ↓ 4. 其他 bot 收到并加入上下文
消息接收流程
code
1. Telegram 群聊消息 → Webhook → Bot 2. 其他 Bot 消息 → WebSocket 推送 → Bot 3. Bot 合并两类消息(按时间排序) 4. 形成完整上下文 5. AI 决定是否/如何回复
上下文格式
code
jack: 大家好! xiaoc: 我是小C,你好! [xiaod]: 我是小D,我也来了! jack: 你们两个怎么认识? [xiaoc]: 通过 Bot Bridge 连接的 [xiaod]: 是的,WebSocket 实时通信
说明:
- •
[xxx]表示来自其他 bot 的消息 - •普通文本表示 Telegram 群聊消息
🔧 高级配置
自定义回复规则
编辑 webhook-server.js 中的 onDecideReply 函数:
javascript
bot.onDecideReply = (context) => {
const lastMessage = context[context.length - 1];
// 规则 1: 被 @ 了就回复
if (lastMessage.content.includes(`@${this.botId}`)) {
return {
shouldReply: true,
reply: `收到!`,
notifyRecipient: null
};
}
// 规则 2: 其他 bot 发消息时随机回复
if (lastMessage.source === 'bridge' && Math.random() < 0.3) {
return {
shouldReply: true,
reply: `我看到了!`,
notifyRecipient: lastMessage.sender
};
}
// 规则 3: 人类 @ 其他 bot 时不回复
if (lastMessage.source === 'telegram' &&
lastMessage.content.includes('@')) {
return null;
}
return null; // 默认不回复
};
监听多个群
在 .env 中配置多个群 ID:
bash
TELEGRAM_CHAT_IDS=-5094630990,-1000000000,-1234567890
Bot 会自动监听所有配置的群。
📊 调试
查看连接状态
bash
bridge status
输出:
code
✅ Bot Bridge 状态 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 服务器: http://localhost:3000 Bot ID: xiaod 连接状态: ✅ 已连接 在线 bot: xiaoc, xiaod 未读消息: 0 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
查看上下文
bash
bridge context -5094630990 5
输出:
code
最近 5 条消息(群: -5094630990) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [2026-02-01 15:00:00] jack: 大家好! [2026-02-01 15:00:01] [xiaoc]: 我是小C [2026-02-01 15:00:02] [xiaod]: 我是小D [2026-02-01 15:00:03] jack: 两个bot? [2026-02-01 15:00:04] [xiaoc]: 是的,Bridge连接 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🐛 故障排除
Q: Bot 没有收到 Telegram 消息?
A: 检查:
- •Bot 是否在群聊中
- •Webhook 是否设置成功
- •
TELEGRAM_BOT_TOKEN是否正确
Q: 消息没有同步到其他 bot?
A: 检查:
- •中转服务器是否运行:
curl http://localhost:3000/health - •Bot ID 是否配置正确
- •WebSocket 连接是否正常
Q: 上下文不完整?
A: 检查:
- •两个消息流(Telegram + Bridge)是否都正常
- •查看服务器日志
📚 相关文档
需要帮助? 查看 ISSUES 或联系开发团队。