Telegram是OpenClaw原生支持的频道之一,底层使用grammY框架。Telegram的群组和频道功能非常强大,拥有原生的Bot API、精细的权限控制和丰富的消息格式。本文将深入介绍OpenClaw在Telegram群组场景下的高级配置选项。
Telegram群组类型
Telegram有几种不同的群组类型,了解它们的区别有助于合理配置Bot:
普通群组:最多200人的小型群组。Bot在其中可以接收所有消息(如果关闭了Privacy Mode)或只接收命令和@提及的消息。
超级群组(Supergroup):最多200,000人的大型群组,支持更多管理功能。这是大多数社区使用的群组类型。
频道(Channel):单向广播频道,Bot可以作为管理员发布消息,但通常不会用于交互式AI对话。
Privacy Mode与消息接收
Telegram Bot默认开启Privacy Mode,这意味着在群组中Bot只能收到以下消息:以 / 开头的命令、直接@提及Bot的消息、Bot发送的消息的回复,以及服务消息(如成员加入/退出)。
如果你希望Bot能接收群组中的所有消息,需要在BotFather中关闭Privacy Mode。发送 /setprivacy 命令并选择你的Bot,然后设为Disabled。注意修改后需要将Bot移出群组再重新添加才能生效。
在 openclaw.json 中配置群组行为:
{
"channels": {
"telegram": {
"enabled": true,
"token": "your-bot-token",
"groups": {
"privacyMode": false,
"triggerMode": "command_and_mention",
"commands": ["/ask", "/chat", "/help"]
}
}
}
}
命令系统
Telegram的命令系统是与Bot交互的标准方式。OpenClaw允许你定义多个命令,每个命令可以绑定不同的行为:
{
"channels": {
"telegram": {
"groups": {
"commands": {
"/ask": {
"description": "向AI提问",
"behavior": "single_response"
},
"/chat": {
"description": "开始多轮对话",
"behavior": "conversation"
},
"/reset": {
"description": "重置对话上下文",
"behavior": "reset_context"
}
}
}
}
}
}
single_response 模式下Bot只回复一次,conversation 模式下Bot会持续跟踪该用户的后续消息(直到超时或手动重置)。建议在BotFather中使用 /setcommands 注册这些命令,这样用户在输入 / 时可以看到命令列表和描述。
群组权限控制
OpenClaw提供多层次的Telegram群组权限控制:
{
"channels": {
"telegram": {
"groups": {
"allowedGroups": [-1001234567890, -1009876543210],
"userAllowlist": [123456789, 987654321],
"adminOnly": false,
"requirePairing": false
}
}
}
}
群组白名单(allowedGroups):使用Telegram群组的chat_id来限制Bot只在特定群组中工作。Chat ID是负数,可以通过让Bot接收一条群消息来获取。
用户白名单(userAllowlist):限制特定用户ID才能在群组中触发AI。其他用户的消息会被忽略。
仅管理员(adminOnly):设为true时,只有群组管理员可以使用AI功能。
私信配对(requirePairing):要求用户先通过私聊与Bot完成配对验证。
这些选项可以组合使用。例如,你可以设置只有特定群组中已配对的用户才能使用Bot。
内联模式
Telegram Bot支持内联模式(Inline Mode),用户可以在任何聊天中通过 @botname 问题 的方式调用AI,无需将Bot添加到群组中。在BotFather中启用内联模式后,在OpenClaw中配置:
{
"channels": {
"telegram": {
"inlineMode": {
"enabled": true,
"cacheTime": 30
}
}
}
}
内联模式的回复会以内联查询结果的形式呈现,用户选择后会将结果发送到当前对话中。
多机器人管理
在大型社区中,你可能需要部署多个AI Bot,每个承担不同的角色。OpenClaw支持在同一实例中运行多个Telegram Bot:
{
"channels": {
"telegram": [
{
"name": "general-assistant",
"token": "bot-token-1",
"model": "gpt-4"
},
{
"name": "code-helper",
"token": "bot-token-2",
"model": "claude-sonnet"
}
]
}
}
每个Bot使用不同的token和模型配置,可以在同一个群组中共存。用户通过@不同的Bot来调用不同的AI助手。
消息格式与Markdown
Telegram支持MarkdownV2和HTML两种消息格式。OpenClaw默认使用MarkdownV2来格式化AI回复,支持粗体、斜体、代码块、链接等。如果AI回复中包含复杂的格式,OpenClaw会自动处理转义字符以确保Telegram正确渲染。
你可以通过配置切换为HTML格式或纯文本:
{
"channels": {
"telegram": {
"parseMode": "MarkdownV2"
}
}
}
速率限制与队列
Telegram Bot API有速率限制:每秒最多30条消息,同一群组每分钟最多20条消息。OpenClaw内置了消息队列机制来处理这些限制。在高流量群组中,回复可能会有短暂延迟,这是正常的。
故障排查
如果Bot在群组中无法响应,按以下步骤排查:确认Bot已被添加到群组中;检查Privacy Mode设置是否与触发模式匹配;验证群组ID是否在白名单中(如果配置了白名单);查看OpenClaw日志中是否有错误信息。使用 openclaw channels status 命令可以快速查看所有频道的连接状态。