| 摘要 | 专业的 Telegram 机器人,可使用 OpenAI GPT-4.1-nano 通过 AI 生成的摘要,自动通知 Discourse 论坛的新帖子。 | |
| 代码库链接 | GitHub - DigneZzZ/webhook_tg_bot | |
| 安装指南 | README_EN.md |
Webhook Telegram 机器人 - AI 驱动的 Discourse 通知
注意:虽然这不是一个传统的 Discourse 插件,而是一个外部集成服务,但我找不到更合适的类别来与 Discourse 社区分享这个有用的工具。这个机器人与您的 Discourse 论坛协同工作,提供增强的通知功能。
功能
Discourse 集成
-
处理主题和帖子创建事件的 Webhook
-
支持所有类型的 Discourse 内容
-
将主题和帖子数据合并为统一的消息
-
Webhook 签名验证以确保安全 (HMAC-SHA256)
AI 内容分析
-
OpenAI GPT-4.1-nano 集成,用于智能帖子摘要
-
具有 HTML 清理功能的上下文感知内容分析
-
不同内容类型的特殊模板
-
自动内容过滤和处理
高级 Telegram 投递
-
将通知发送到主聊天或特定论坛主题
-
分类映射 - 将不同的 Discourse 分类路由到不同的 Telegram 主题
-
用户角色表情符号前缀 (
管理员,
版主,
员工等) -
智能 HTML 消息格式化
灵活过滤与控制
-
监控特定分类或所有分类
-
通过优先级系统忽略不需要的分类
-
阻止机器人用户 (discobot, chatbot, 系统用户)
-
高级版部分通知及订阅提醒
生产就绪
-
带有健康检查的 Docker 容器化
-
GitHub Actions CI/CD 流水线
-
用于自动启动的 Systemd 集成
-
全面的日志记录和监控
-
优雅的关机和错误处理
配置
1. Discourse Webhook 设置
-
导航到 Admin → API → Webhooks
-
点击 New Webhook
-
配置:
Payload URL: https://your-domain.com/webhook
Content Type: application/json
Secret: your_webhook_secret
Which events: Topic Event + Post Event
2. Telegram 机器人设置
-
通过 @BotFather 创建机器人
-
获取群组/频道的 Chat ID
-
可选地设置论坛主题以进行分类路由
3. 环境配置
创建 .env 文件并填入必需的设置 (请参阅代码库中的完整配置)。
4. Docker 部署
# 快速安装
curl -fsSL https://raw.githubusercontent.com/dignezzz/webhook_tg_bot/main/install.sh -o install.sh
chmod +x install.sh
./install.sh install
5. 反向代理设置
要在您的域上支持 Webhook,请配置反向代理 (nginx/Apache) 将 Webhook 请求路由到 8080 端口的机器人容器。
示例 nginx 配置:
location /webhook {
proxy_pass http://localhost:8080/webhook;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
设置
| 名称 | 描述 | 默认 | 必需 |
|---|---|---|---|
TELEGRAM_BOT_TOKEN |
来自 @BotFather 的机器人令牌 | - | |
TELEGRAM_CHAT_ID |
目标群组/频道 ID | - | |
TELEGRAM_THREAD_ID |
主题 ID (0 = 主聊天) | 0 | |
WEBHOOK_SECRET |
用于签名验证的密钥 | - | |
WEBHOOK_PORT |
Webhook 服务器端口 | 8080 | |
WEBHOOK_PATH |
Webhook 端点路径 | /webhook | |
OPENAI_API_KEY |
用于摘要的 OpenAI API 密钥 | - | |
OPENAI_MODEL |
要使用的 GPT 模型 | gpt-4.1-nano | |
BASE_URL |
您的 Discourse 论坛 URL | - | |
MONITORED_CATEGORIES |
要监控的分类 ID (逗号分隔) | all | |
IGNORED_CATEGORIES |
要忽略的分类 ID (逗号分隔) | none | |
IGNORED_USERS |
要忽略的用户 ID (逗号分隔) | none | |
PREMIUM_CATEGORIES |
高级版分类 ID (逗号分隔) | none |
分类到主题的映射 (可选):
TELEGRAM_THREAD_ID_1=123456
THREAD_CATEGORIES_1=1,2,3
TELEGRAM_THREAD_ID_2=234567
THREAD_CATEGORIES_2=4,5
消息格式示例
👤 👑 Administrator 创建了一个新帖子:Docker 配置指南
📋 作者分享了 Docker 容器配置问题的解决方案,并逐步解释了修复数据库连接错误的步骤。
🔗 主题链接 (https://forum.example.com/t/topic/123)
🏷 标签:#docker, #database, #troubleshooting
💎 此部分仅限订阅用户访问。
安装与管理
该机器人包含一个管理脚本,方便进行操作:
whtg status # 检查机器人状态
whtg start # 启动机器人
whtg stop # 停止机器人
whtg restart # 重启机器人
whtg logs # 查看日志
whtg update # 更新到最新版本
whtg uninstall # 卸载机器人
语言支持
注意:目前,所有界面消息和文档均为俄语,但很快将添加英语支持。该机器人可与任何语言的 Discourse 论坛配合使用。
技术要求
-
Docker 和 Docker Compose
-
反向代理 (nginx/Apache) 以支持 Webhook 域名
-
OpenAI API 密钥 (可选,用于 AI 摘要)
-
HTTPS 证书 (推荐用于生产环境)
支持与贡献
-
GitHub 代码库: GitHub - DigneZzZ/webhook_tg_bot
-
Issues: 报告错误或功能请求
-
Discussions: 社区讨论
许可证: MIT License