介绍
# Telegram Auto-Topic
在 Telegram 群组中,在任何消息的开头添加 `/topic` → 即会根据该消息创建一个新话题。标题会根据你的消息自动生成,无需自己费心构思。
### 示例
**1.** 你发送一条以 `/topic` 开头的消息: > /topic @your_bot I need to look into renewing my passport before March
**2.** 一个新的论坛话题 **"Passport Renewal Before March"** 被创建,你的消息被引用在其中。你会收到一条回复,包含直接指向新话题的链接。
## 前置条件
- 该群组必须在 OpenClaw 中配置(`channels.telegram.groups.<CHAT_ID>`)——这是 OpenClaw 识别并处理该群组消息的方式。 - 该群组必须启用 **论坛/话题** 功能。 - 你的机器人必须在群组中拥有管理员身份,且具备 **管理话题** 权限。
## 处理 /topic
当消息以 `/topic` 开头时:
1. 生成一个简洁的 3-7 词标题来总结消息内容。 2. 运行脚本 —— 将占位符替换为消息上下文中的实际值: ``` scripts/telegram-auto-topic.sh <chat_id> <message_id> "<sender name>" "<title>" "<text after /topic>" ``` 如果没有文本(例如仅媒体),text 参数请传递空字符串。 使用相对于当前技能目录的路径。 3. 脚本返回包含 `topic_id`、`title` 和 `link` 的 JSON。 4. 回复原始消息,内容为:`Topic created → [<title>](<link>)` 5. 然后在**新话题**中发送对实际消息内容的响应(使用返回的 `topic_id` 中的 `threadId` 调用 message 工具)。像回复普通消息一样自然地回应。 6. 两条回复都发送完毕后,返回 NO_REPLY。
## 工作原理
1. 你发送一条以 `/topic` 开头的消息。 2. 一个新的论坛话题被创建 —— 标题根据你的消息自动生成。 3. 你的消息连同你的名字一起被引用到新话题中。 4. 你会收到一条回复,其中包含指向新话题的可点击链接。 5. 机器人在新话题中回复你的消息。
同样适用于媒体内容 —— 在说明文字中带有 `/topic` 的照片、视频或文档会被转发到新话题中。
## 脚本参考
```bash scripts/telegram-auto-topic.sh <chat_id> <message_id> <sender> [title] [text] ```
| 参数 | 类型 | 必填 | 描述 | |-----------|------|----------|-------------| | `chat_id` | arg | 是 | 超级群组聊天 ID(负数) | | `message_id` | arg | 是 | 要引用的原始消息 ID | | `sender` | arg | 是 | 原始发送者的显示名称 | | `title` | arg | 否 | 话题标题。如果省略,则回退到文本的前约 50 个字符 | | `text` | arg | 否 | `/topic` 之后的消息正文。如果为空,则以媒体形式转发 |
返回 JSON:`{"topic_id": 123, "title": "Used title", "link": "https://t.me/c/..."}`
## 可选配置
**跳过 @bot 提及** —— 默认情况下,机器人仅在被提及时响应。要在不提及机器人的情况下使用 `/topic`:
```json "channels.telegram.groups.<CHAT_ID>": { "requireMention": false } ```
**Telegram 自动补全** —— 要在 Telegram 的命令菜单中获取 `/topic`,请在 `channels.telegram` 下添加:
```json { "customCommands": [ { "command": "topic", "description": "Create a new forum topic from a message" } ] } ```
## 限制
- **归属:** 引用的消息显示为由机器人发送(Telegram API 限制)。发送者名称包含在引用下方的归属文本中。 - **媒体:** 转发的媒体会显示“转发自”标头 —— 这是目前可用的最佳方案,但非原生功能。 - **仅限论坛群组:** 在普通群组或私信中无效。 - **权限:** 机器人需要具备管理话题权限的管理员身份。 - **标题长度:** Telegram 将话题名称限制为 128 个字符。