一个自动克隆群消息到指定的群组(们)的 Python 脚本,且媒体组不会被打散。
pip3 install pyrogram tgcrypto uvloop apscheduler
Windows 平台不支持 uvloop ,自行修改源码也许能运行
python3 clone.py
后台运行需要使用 screen 或 nohup 等
api_id
api_hash
在 https://my.telegram.org/ 获取
jobs
任务设置,格式为:{源群组一ID: [目标群组一ID, 目标群组二ID, 目标群组三ID], 源群组二ID: [目标群组一ID]}
示例:{-10055
: [-10066
, -10077
]} ,即将 -10055
的消息自动复制到 -10066
和 -10077
Telegram 对于媒体组的显示机制是逐条更新,所以接收者无法判断媒体组是否已经发完(除非达到10条的上限)。故程序采用以下逻辑判断:
1.接收到媒体组时先暂存不立即复制
2.如果新消息是媒体组并且与最后一条消息的媒体组 ID 不同,说明上一个媒体组已经发完,此时立即复制上一个媒体组
3.如果新消息是独立消息,说明上一个媒体组已经发完,此时立即复制上一个媒体组,并且立即复制本条消息
4.如果最后一条消息是媒体组,程序无法判断是否发完,故每5秒检查一次最后一条消息的时间。如果已经过去5秒,则大概率已经发完,立即复制暂存的媒体组