从零开始配置频道接入,私聊/群聊权限配置
目录
- 前置准备
- 基础配置:接入 Telegram
- 私聊策略(dmPolicy)
- 群聊策略(groupPolicy)
- 白名单配置(allowFrom)
- 消息行为配置
- Bot 功能开关(actions)
- 群组专属配置(groups)
- 完整配置示例
- 配置方式
1. 前置准备
1.1 创建 Telegram Bot
- 在 Telegram 中搜索 @BotFather,发送
/newbot - 按提示设置 bot 名称和 username
- 获取 Bot Token(格式:
123456789:ABCdefGHIjklMNOpqrSTUvwxYZ) - 接着发送
/setprivacy→ 选择你的 bot → 选 Disable(让 bot 能在群里看到所有消息)
1.2 要获取你的 Telegram 用户 ID
需要的是你的数字 ID(不是 @username),获取方式:
- 私聊 @userinfobot,它会返回你的数字 ID
- 或启动 OpenClaw 后看日志中
from.id字段
2. 基础配置:接入 Telegram
在 openclaw.json 的 channels 中添加 telegram:
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "YOUR_BOT_TOKEN"
}
}
}
这是最小配置,启动后 bot 就能收发消息了。但默认权限较宽松,建议继续配置访问控制。
3. 私聊策略(dmPolicy)
控制谁能通过 Telegram 私聊与 bot 对话。
| 值 | 效果 | 适用场景 |
|---|---|---|
pairing | 首次私聊需手动审批(默认) | 初次部署 |
allowlist | 仅白名单用户可私聊 | |
open | 任何人都能私聊 | 公开服务型 bot |
disabled | 完全禁用所有私聊 | 纯群聊 bot |
{
"channels": {
"telegram": {
"dmPolicy": "allowlist",
"allowFrom": ["YOUR_USER_ID"]
}
}
}
注意:
disabled会无视allowFrom,即使白名单里有你自己,私聊消息也会被丢弃。如果只想限制他人私聊而不是关闭自己的,请记得使用allowlist。
pairing 模式详解
首次使用推荐 pairing,流程:
- 用户在 Telegram 私聊 bot
- OpenClaw 记录配对请求
- 你在命令行执行
openclaw pairing approve <request-id> - 该用户被加入白名单,后续可直接对话
配对完成后可切换为 allowlist 简化后续使用。
4. 群聊策略(groupPolicy)
控制群聊中谁的消息 bot 会处理。
| 值 | 效果 |
|---|---|
open | 群内所有人的消息都处理 |
allowlist | 仅白名单用户的消息会被处理(默认) |
disabled | 完全忽略所有群聊消息 |
{
"channels": {
"telegram": {
"groupPolicy": "open"
}
}
}
重要:groupPolicy 只接受
open、allowlist、disabled三个值,拼写错误(如 “allowList” 大写 L)会导致配置校验失败,容器无法启动。
群聊白名单
当 groupPolicy: "allowlist" 时,默认复用 allowFrom。如需单独控制群聊白名单:
{
"channels": {
"telegram": {
"groupPolicy": "allowlist",
"groupAllowFrom": ["USER_ID_1", "USER_ID_2"]
}
}
}
5. 白名单配置(allowFrom)
allowFrom 是核心权限列表,同时作用于 dmPolicy=allowlist 和 groupPolicy=allowlist。
{
"channels": {
"telegram": {
"allowFrom": ["123456789", "987654321"]
}
}
}
- 值为 Telegram 数字用户 ID 的字符串数组
- 支持通配符
"*"(允许所有人,配合open策略使用) - 群聊可用
groupAllowFrom单独覆盖
6. 消息行为配置
6.1 自动确认表情(ackReaction)
Bot 收到消息后自动点一个表情表示”已收到”。
{
"messages": {
"ackReaction": "👀",
"ackReactionScope": "group-mentions"
}
}
| 字段 | 说明 |
|---|---|
ackReaction | 自动回应的 emoji,设为 "" 可禁用 |
ackReactionScope | 触发范围:direct(仅私聊)、group-mentions(群聊被@时)、all |
![]()
ackReaction是系统层行为(无条件触发),和 AI 模型主动发起的 reaction 是两套独立机制。如果你觉得 bot 反应太频繁,先检查这个配置。设为空字符串""禁用后,AI 仍可根据语境主动 react。
6.2 流式输出(streamMode)
控制 bot 回复时是否实时更新消息。
| 值 | 效果 |
|---|---|
partial | 实时流式更新,用户能看到打字过程(推荐) |
full | 等完整回复生成后一次性发送 |
none | 不流式 |
{
"channels": {
"telegram": {
"streamMode": "partial"
}
}
}
7. Bot 功能开关(actions)
控制 bot 可以执行哪些 Telegram 操作。
{
"channels": {
"telegram": {
"actions": {
"reactions": true,
"sendMessage": true,
"deleteMessage": true,
"sticker": true
}
}
}
}
| 功能 | 说明 |
|---|---|
reactions | 允许 bot 给消息点表情 |
sendMessage | 允许 bot 主动发消息 |
deleteMessage | 允许 bot 删除消息 |
sticker | 允许 bot 发送/搜索贴纸 |
8. 群组专属配置(groups)
可以为特定群设置独立的行为规则。
{
"channels": {
"telegram": {
"groups": {
"-100XXXXXXXXXX": {
"systemMessage": "你在一个技术讨论群里,保持专业。",
"requireMention": true
}
}
}
}
}
| 字段 | 说明 |
|---|---|
systemMessage | 该群专属的系统提示词 |
requireMention | 是否需要 @bot 才触发回复 |
群 ID 获取方式:查看 OpenClaw 日志中的 chat.id 字段,超级群通常以 -100 开头。
9. 完整配置示例
个人使用(推荐)
只有自己能私聊,群聊所有人可触发,无自动表情:
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "YOUR_BOT_TOKEN",
"dmPolicy": "allowlist",
"allowFrom": ["YOUR_USER_ID"],
"groupPolicy": "open",
"streamMode": "partial",
"actions": {
"reactions": true,
"sendMessage": true,
"deleteMessage": true,
"sticker": true
}
}
},
"messages": {
"ackReaction": "",
"ackReactionScope": "group-mentions"
}
}
多人共用(何尝不是一种NTR呢
)
多个用户都能私聊和群聊:
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "YOUR_BOT_TOKEN",
"dmPolicy": "allowlist",
"allowFrom": ["USER_ID_1", "USER_ID_2", "USER_ID_3"],
"groupPolicy": "open",
"streamMode": "partial"
}
}
}
纯群聊 Bot
不接受私聊,只在群组内工作,需要 @mention 才回复:
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "YOUR_BOT_TOKEN",
"dmPolicy": "disabled",
"groupPolicy": "open",
"groups": {
"-100XXXXXXXXXX": {
"requireMention": true,
"systemMessage": "你是群聊助手,被 @ 时才回复。"
}
}
}
}
}
10. 配置方式
方式一:直接编辑文件
nano ~/.openclaw/openclaw.json
# 编辑后重启
openclaw gateway restart
方式二:CLI Patch(推荐)
Patch 会自动校验配置合法性,相对于手动编辑来说更安全:
# 修改单个字段
openclaw config patch '{"channels":{"telegram":{"dmPolicy":"allowlist"}}}'
# 修改多个字段
openclaw config patch '{"channels":{"telegram":{"dmPolicy":"allowlist","groupPolicy":"open"}}}'
# 修改后自动重启,或手动重启
openclaw gateway restart
验证配置
# 查看当前完整配置
openclaw config get
# 查看日志
openclaw logs --tail 50
个人认为最推荐的初始配置:
dmPolicy=allowlist+groupPolicy=open+ackReaction=""。