跳到主要内容

3.2 Telegram

Telegram 是一款全球知名的即时通讯应用,以其快速、安全和丰富的机器人功能著称。Telegram 接入是 OpenClaw 最简单的渠道之一。

前置要求

  • Telegram 账号
  • OpenClaw 已安装并完成初始配置

创建 Telegram 机器人

1. 与 @BotFather 对话

打开 Telegram,搜索并联系 @BotFather

⚠️ 注意:确认用户名确实是 @BotFather,谨防假冒。

2. 创建新机器人

发送 /newbot 命令,按照提示:

  1. 输入机器人名称(如 "My AI Assistant")
  2. 输入以 bot 结尾的用户名(如 my_ai_assistant_bot

3. 获取 Token

创建成功后,BotFather 会返回机器人 Token,格式如:

123456789:ABCdefGHIjklMNOpqrsTUVwxyz

⚠️ 注意

  • 妥善保管 Token,不要泄露
  • 如果泄露,通过 @BotFather 撤销并重新生成

4. (可选)配置机器人

@BotFather 还支持以下配置:

  • /setjoingroups — 控制是否可以添加到群组
  • /setprivacy — 控制是否可以读取所有群组消息
  • /setdescription — 设置机器人描述
  • /setuserpic — 设置机器人头像

配置 OpenClaw

方式一:命令行添加(推荐)

openclaw channels add

按照提示选择 Telegram,输入 Bot Token 即可。

方式二:配置文件

编辑 ~/.openclaw/openclaw.json

{
"channels": {
"telegram": {
"enabled": true,
"botToken": "YOUR_BOT_TOKEN",
"dmPolicy": "pairing"
}
}
}

方式三:环境变量

export TELEGRAM_BOT_TOKEN="YOUR_BOT_TOKEN"

配置群组设置

隐私模式说明

Telegram 机器人默认启用隐私模式,这意味着:

  • 机器人只能收到被 @提及的消息
  • 机器人无法读取群组中其他人的对话

关闭隐私模式

如果你需要机器人读取群组中所有消息:

  1. 在 @BotFather 中发送 /setprivacy
  2. 选择你的机器人
  3. 选择 Disable

⚠️ 注意:关闭隐私模式后,需要将机器人从群组中移除并重新添加,更改才能生效。

配置 OpenClaw 群组规则

{
"channels": {
"telegram": {
"groups": {
"-1001234567890": {
"requireMention": false // 无需 @也响应
}
}
}
}
}

常用配置示例

{
"channels": {
"telegram": {
"groupPolicy": "allowlist",
"groupAllowFrom": ["123456789"],
"groups": {
"*": {
"requireMention": true // 默认需要 @提及
},
"-1001234567890": {
"requireMention": false // 特定群组无需 @
}
}
}
}
}

启动与测试

1. 启动网关

openclaw gateway

2. 验证状态

openclaw gateway status
openclaw channels status

3. 发送测试消息

在 Telegram 中搜索你的机器人用户名,开始对话。

4. 配对授权

默认配对模式下,你需要批准配对码:

# 查看待审批列表
openclaw pairing list telegram

# 批准配对
openclaw pairing approve telegram <配对码>

获取 ID

获取群组 ID

方法一:转发消息

  • 将群组中任何消息转发给 @userinfobot 或 @getidsbot
  • 机器人会返回聊天 ID(负数,如 -1001234567890

方法二:查看日志

  • 启动网关,在群组中发消息
  • 运行 openclaw logs --follow 查看 chat_id

获取用户 ID

方法一:

  • 私信机器人,发送任何消息
  • 运行 openclaw logs --follow 查看 from.id

方法二:

  • 使用 @userinfobot 查询

访问控制

私聊策略(dmPolicy)

说明
pairing默认。陌生用户收到配对码,需批准
allowlist仅 allowFrom 列表中的用户可对话
open允许所有人(需设置 allowFrom: ["*"])
disabled完全禁止私聊

群组策略(groupPolicy)

说明
open允许群组中所有人
allowlist仅 groupAllowFrom 中的用户可使用
disabled禁用群组消息

高级功能

自定义命令

在配置中添加自定义命令:

{
"channels": {
"telegram": {
"customCommands": [
{ "command": "backup", "description": "Git 备份" },
{ "command": "generate", "description": "创建图片" }
]
}
}
}

草稿流式传输

Telegram 支持在机器人回复时实时显示"草稿"气泡:

{
"channels": {
"telegram": {
"streamMode": "partial" // off / partial / block
}
}
}

要求:

  • 在 @BotFather 中启用线程模式
  • 仅限私信中的线程

内联按钮

{
"channels": {
"telegram": {
"capabilities": {
"inlineButtons": "allowlist" // off / dm / group / all / allowlist
}
}
}
}

Webhook 模式

默认使用长轮询,如需 Webhook:

{
"channels": {
"telegram": {
"webhookUrl": "https://your-domain.com/telegram-webhook",
"webhookSecret": "your-secret"
}
}
}

多账号配置

{
"channels": {
"telegram": {
"accounts": {
"main": {
"botToken": "xxx",
"name": "主机器人"
},
"secondary": {
"botToken": "yyy",
"name": "备用机器人",
"enabled": false
}
}
}
}
}

常见问题

机器人不响应群组消息

  1. 检查隐私模式是否关闭(@BotFather 中 /setprivacy → Disable)
  2. 检查是否 @了机器人
  3. 检查配置中是否列出了该群组
  4. 查看日志:openclaw logs --follow

机器人完全看不到群组消息

  1. 确认机器人确实是群组成员
  2. 检查隐私设置
  3. 如果使用允许列表,确认群组已列入

命令不起作用

  • 确保你的用户 ID 已通过配对或 allowFrom 授权

网络问题

如果看到 HttpError: Network request failed

  • 检查服务器是否能访问 api.telegram.org
  • 尝试在 /etc/hosts 中强制使用 IPv4:
    149.154.167.220 api.telegram.org

下一步