一个用Go编写的Telegram机器人,用于将消息从源频道复制到目标频道,并添加指向源频道评论区的内联按钮。
- ✅ 复制消息(非转发,不显示"Forwarded from")
- ✅ 支持多种消息类型:文本、图片、视频、文档、音频、语音、动画、贴纸
- ✅ 保留原始消息格式和实体(粗体、斜体、链接等)
- ✅ 添加"💬 查看评论"按钮链接到源频道
- ✅ 优雅关闭(Ctrl+C)
- Go 1.21 或更高版本
- Telegram Bot Token(从 @BotFather 获取)
- Bot必须是源频道和目标频道的管理员
- 源频道需要开启评论功能(关联讨论组)
cd /path/to/XJB_relaygo mod download复制 .env.example 为 .env:
cp .env.example .env编辑 .env 文件,填入你的配置:
BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
SOURCE_CHANNEL_ID=-1001234567890
TARGET_CHANNEL_ID=-1009876543210
SOURCE_CHANNEL_USERNAME=mychannel- 将bot添加到频道作为管理员
- 在频道发送一条消息
- 访问:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates - 查找
"chat":{"id":-100xxxxxxxxxx}中的ID
- 如果频道有公开链接
https://t.me/mychannel,用户名就是mychannel - 如果是私有频道,需要先设置公开用户名
set -a && source .env && set +a && go run main.gogo build -o tg-relay-bot main.go
set -a && source .env && set +a && ./tg-relay-botBOT_TOKEN=xxx SOURCE_CHANNEL_ID=-100xxx TARGET_CHANNEL_ID=-100xxx SOURCE_CHANNEL_USERNAME=xxx go run main.go注意:必须使用 set -a && source .env && set +a 来确保环境变量正确导出到子进程。
- 启动bot后,它会监听源频道的新消息
- 每当源频道有新消息时,bot会自动复制到目标频道
- 复制的消息会附带一个"💬 查看评论"按钮
- 点击按钮会跳转到源频道的该条消息(可查看评论)
按 Ctrl+C 优雅关闭bot。
- ✅ 纯文本消息
- ✅ 带格式的文本(粗体、斜体、链接等)
- ✅ 图片(含标题)
- ✅ 视频(含标题)
- ✅ 文档(含标题)
- ✅ 音频(含标题)
- ✅ 语音消息
- ✅ 动画/GIF
- ✅ 贴纸
- Bot必须在两个频道都有管理员权限
- Bot需要有发送消息的权限
- 只会复制bot启动后的新消息,不会复制历史消息
- 如果源频道没有公开用户名,评论按钮可能无法正常工作
- 检查
BOT_TOKEN是否正确 - 确认环境变量已正确加载
- 确认bot是源频道的管理员
- 检查
SOURCE_CHANNEL_ID是否正确(必须是负数) - 查看日志输出是否有错误信息
- 确认bot是目标频道的管理员
- 确认bot有发送消息的权限
- 检查
TARGET_CHANNEL_ID是否正确
- 确认
SOURCE_CHANNEL_USERNAME配置正确 - 确认源频道有公开用户名
- 确认源频道开启了评论功能
MIT License