【开源】Telegram群聊AI总结机器人

干嘛用的

在docker中启动Telegram客户端,将你账号收到的群聊消息(经过处理)后存入数据库,调用OpenAI兼容的API总结群聊内容。同时也支持使用Dify、Coze等工具和平台自建工作流调用。

经过的处理有:

  • 判断是否符合黑/白名单定义,保存或丢弃消息。
  • 命中环境变量中的关键词将被丢弃。
  • 机器人(is_bot=true)发送的消息将被过滤。
  • 单条消息是否超过300字符,超过的部分将被截断,减少API调用时遇到413错误的可能性。
  • 多行文本的消息将被合并为一行,使用空格代替\n.
  • 不接收图片、视频等消息,仅接受文本消息。

下一步,计划将微信群聊也同步到数据库中,同样生成AI总结。

用不用的,看到就给点个星吧,我不喝咖啡。

https://github.com/ShiFangJuMie/Telegram_Messages_Helper

怎么安装

前提条件

1、你需要有TG账号的API权限。
2、你需要已经安装docker compose
3、你需要已经安装PgSQL
4、先看完下面的内容,再决定要不要用

申请TG的API权限:https://my.telegram.org/apps

使用方法

1.克隆仓库

git clone https://github.com/ShiFangJuMie/Telegram_Messages_Helper.git
cd Telegram_Messages_Helper

2.创建数据库环境

app/data/postgres.sql导入到你的postgres中。

我不喜欢同一个主机上不同的项目各自部署多个postgres,所以你需要自己部署。

传送门 https://hub.docker.com/_/postgres

# 在此版本下测试通过,理论上也能兼容其他版本,根据个人喜好选择
docker pull postgres:16.1-alpine

3.编辑环境变量并部署

# 创建docker镜像
docker build -t telegram_messages_helper:latest .
# 根据你的情况修改docker compose中的环境变量
vim docker-compose.yml
# 然后开始构建镜像并部署
docker compose up -d

4.登录你的TG账号

你需要先将账号登录到容器中。在docker容器运行后,你需要以下几个步骤:

# 进入容器内部
docker exec -it telegram_messages_helper bash
# 手动执行初始化命令
python setup.py

在执行这个命令后,你需要和命令行进行2-3次交互,他们分别是:TG手机号、登录2FA验证码、密码示例如下

Please enter your phone (or bot token): +1 1234567890
Please enter the code you received: 12345
Please enter your password: 

如果你的登录成功了,你会看到这样的提示:

Signed in successfully as <你的昵称>; remember to not break the ToS or you will risk an account ban!
Group Title: 群聊名字 | Chat ID: -1001680975xxx
Group Title: 群聊名字 | Chat ID: -1001239150xxx

通过Group Title找到你想“总结”或不想总结的群,记下它的Chat ID。

(可选步骤) 配置群组黑白名单

如果你需要使用群组的黑/白名单,setup之后你才拥有了Chat ID,所以再次修改你的docker-compose.yml,根据需要设置环境变量 TELEGRAM_WHITELIST_CHATTELEGRAM_BLACKLIST_CHAT

不过我建议的是先观察一阵子,然后从数据库中筛选要总结或要过滤的群组,一次性的设置。

5.重启容器

在你完成所有的设置后,重启一次容器。

6. 查看消息与总结

查看聊天记录

当你想要使用dify、coze等平台实现工作流时,可以通过此路径获取获取原始文本。

输出中可以使用关键词“当前为最后一页”和“没有更多的记录了”供工作流判断。
https://xxxxxx.com/?auth=om34V4s958c9d345&page=1

可用参数:

参数 用途
page=1 页码,默认1
all=true 忽略分页,将所有记录全部输出,默认false
start_date=YYYY-MM-DD 查看指定一天的记录,默认前一天
auth 必填,与环境变量AUTH_CODE一致

查看AI总结后的内容

https://xxxxxx.com/summary?auth=om34V4s958c9d345

可用参数:

参数 用途
start_date=YYYY-MM-DD 查看指定一天的记录,默认前一天
auth 必填,与环境变量AUTH_CODE一致

自定义设置

计划任务的触发由script_scheduler.py驱动

如果你希望使用dify、coze等工具进行总结,你应该删除其中的script_aigc.py,防止重复总结和token浪费。

文件 用途
script_aggregated.py 每天将群组消息合并
script_aigc.py 请求API进行AI总结(可删除)
script_cleanup.py 删除7天前的消息
script_sync_wechat.py 将微信bot接收到的群聊同步到统一数据库(此功能尚未发布)

总结群聊时的提示词在prompt.txt中定义

FAQ

掉线/换号怎么办

  • 删除app目录下的xxxx.session这个文件,你就掉线了。修改环境变量TELEGRAM_SESSION你就换号了
  • 掉线/换号后,需要使用setup.py重新登录
  • 登录成功后,重启容器

可以与我的桌面/手机客户端同时在线吗

可以

如何获取Chat ID

在setup时只能获取到一部分,但并不是全部,剩下的部分建议从数据库中获取。

select chat_id,chat_name from messages_aggregated;

申请TG API权限不成功

申请时,名字和介绍不要随手乱打,有被拒的亲身经历,几点经验:

  • 申请时提示ERROR没关系,可以继续点,我第一次申请点了几千次(后来确认是IP的原因)。
  • 我在热心大佬的点拨之下,改用与注册手机号相同国家的家庭宽带IP,大陆+86手机用台湾香港IP试,试了几次就成功了。
  • 登录到TG API申请页面后,更换IP会掉线,短时间内登录次数有限制,是正常情况。

AI总结失败,413错误

413错误就是文本太长了,超出了API可以接受的上限。
你可以:

  • 检查该群组中是否存在大量无用的信息,选择性的在环境变量中过滤掉无效信息。(如重复长文本的广告和骚扰信息)
  • 更换一个支持更大上下文的模型。ChatGPT普通号的4o处理量很小,可以使用 deanxv/coze-discord-proxy 大佬的项目获取更大的gpt-4o上下文能力。感谢LinuxDo @Dean大佬。
  • 如果你使用了CDP,请将你的Bot设置中Dialog round调整到最大值(30轮)
25 个赞

集成到Dify

裸装

10 个赞

:cow:批牛批热佬,之前就一直想着怎么把微信群聊给总结一下,过滤出有用信息,可惜才疏学浅,用coze的工作流没做成。
期待大佬越做越强,加油加油 :smiling_face_with_three_hearts:

不愧乔布斯之名 :star_struck:

顶顶

大佬太强了

学习一下

佬 这链接可以点进去…要不要换一个

哈哈哈,没想到有人会点xxx.com

1 个赞

期待微信总结

申请API就GG了。

暂时用不到,mark

马克

好诶!
Mark

:sob: 流下了没技术的泪水

收藏了

等待微信总结出来,mark

非常好ai,使我快速总结,不经常翻消息的,有这个总结也能很快了解大概了,手动爬楼真是太累了

乔布斯太强了!

微信的我自己在用了,还没整理