Code技术
【看门狗】基于 Cloudflare 的 TG 私聊机器人 Bot,提供 AI 驱动的垃圾信息过滤和消息转发功能
280
NI2025/11/17·发布: 2025/11/17
最近也收到一些广告,自己用 AI 简单搓了个 TG 私聊 Bot,私聊信息会经过 AI 判定,如果是垃圾信息会转发到管理群组,提供详细的分析报告。
AI 只要是兼容 OpenAI API 都可以,我用的是 Deepseek,价格比较便宜。
📋 项目介绍
- AI 垃圾信息检测:使用 LLM(大语言模型)自动识别和过滤垃圾信息、广告、诈骗等不良内容
- 管理员消息中继:自动将用户私聊消息转发给管理员,并支持管理员回复功能
- 实时监控:检测到垃圾信息时自动转发到管理群组,提供详细的分析报告
🛠️ 技术栈
- Hono - 轻量级 Web 框架,专为 Cloudflare Workers 优化
- Grammy - 现代化的 Telegram Bot 框架
- OpenAI SDK - 用于调用 LLM API 进行垃圾信息检测
- Cloudflare Workers - Serverless 计算平台
- Cloudflare D1 - 边缘 SQLite 数据库
- TypeScript - 类型安全的开发语言
环境变量
| 变量名 | 必需 | 说明 | 示例 |
|--------|------|------|------|
| DOMAIN | ✅ | Worker 部署域名 | https://bot.example.com |
| BOT_TOKEN | ✅ | Telegram Bot Token | 123456:ABC-DEF... |
| BOT_SECRET | ✅ | Webhook 验证密钥 | 任意随机字符串 |
| ADMIN_UID | ✅ | 管理员 Telegram 用户 ID | 123456789 |
| ADMIN_GID | ❌ | 管理群组 ID(用于垃圾信息警报) | -1001234567890 |
| LLM_API | ✅ | LLM API Base URL | https://api.openai.com/v1 |
| LLM_MODEL | ✅ | LLM 模型名称 | gpt-3.5-turbo |
| LLM_KEY | ✅ | LLM API Key | sk-... |
🚀 部署指南
前置准备
安装 Node.js 和 npm
Bash
1# 检查是否已安装
2
3node --version
4
5npm --version
6
7# 如未安装,请访问 https://nodejs.org/ 下载安装
8
9# 推荐使用 Node.js 18.x 或更高版本步骤 1:克隆和安装依赖
Bash
1# 克隆项目(或下载源码)
2
3git clone <your-repo-url>
4
5cd telegram-watchdog
6
7# 安装项目依赖
8
9npm install步骤 2:上传到 Workers
Bash
1# 部署到 Cloudflare Workers
2
3# 第一次运行会出现登录链接,浏览器打开后授权登录,再重新运行命令
4
5npm run deploy
6
7# 部署成功后,会输出 Worker 的 URL
8
9# 例如:https://telegram-watchdog.your-account.workers.dev步骤 3:创建 Telegram Bot
- 在 Telegram 中找到 @BotFather
- 发送 /newbot 命令创建新 Bot
- 按提示设置 Bot 名称和用户名
- 保存 BotFather 返回的 Bot Token(格式如123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)
步骤 4:获取 Telegram ID
- 获取管理员用户 ID:
- 在 Telegram 中找到 @userinfobot
- 发送任意消息,Bot 会返回你的用户 ID
- 获取管理群组 ID(可选):
- 创建一个群组并将 Bot 添加进去
- 在 Telegram 中找到 @getidsbot
- 将 @getidsbot 添加到群组,它会显示群组 ID(负数,如-1001234567890)
步骤 5:创建 D1 数据库
- 在 Cloudflare 控制面板中,导航至 D1 SQL 数据库页面
- 选择“创建数据库”
- 数据库命名为 watchdog
- 点击创建
步骤 6:配置环境变量
- 在 Cloudflare 仪表板中,转到 Workers & Pages 页面
- 在“概览”中,选择您的 Worker
- 选择"设置"
- 在"变量和机密"下,选择"添加"
- 选择"密钥"类型,输入一个变量名,并输入其值
演示
![]()
![]()
最后更新: 11月17日 20:39
TelegramBot
评论 (0)
还没有评论,来说点什么吧~