Telethon执行代码反复出现‘Server sent a very new message with ID’错误求助
Telethon 「Server sent a very new message」错误解决指南
问题场景
运行Telethon测试代码:
from telethon import TelegramClient api_id = 12345 api_hash = '0123456789abcdef0123456789abcdef' # 用的是my.telegram.org获取的自有API密钥 with TelegramClient('session_name', api_id, api_hash) as client: client.loop.run_until_complete(client.send_message('me', 'Hello, myself!'))
反复出现以下错误,最终触发安全报错:
Server sent a very new message with ID xxxxxxxxxxxxxxxxxxx, ignoring (see FAQ for details) Server sent a very new message with ID xxxxxxxxxxxxxxxxxxx, ignoring (see FAQ for details) ... Security error while unpacking a received message: Too many messages had to be ignored consecutively
已验证的前置操作:
- 删除
.session文件重登,首次运行正常,再次执行依旧报错 - 云服务器运行代码无异常
- 重装所有相关依赖包
- 确认仅本机使用会话、无代理、系统时间自动同步且准确
环境信息:Ubuntu 22.04,Telethon 1.34.0,Python 3.9.7
可行解决方法
1. 强制重置会话消息同步状态
初始化客户端时添加reset_msync=True参数,强制重新同步服务器消息ID序列,修复本地会话与服务器的ID偏移:
from telethon import TelegramClient api_id = 12345 api_hash = '0123456789abcdef0123456789abcdef' with TelegramClient('session_name', api_id, api_hash, reset_msync=True) as client: client.loop.run_until_complete(client.send_message('me', 'Hello, myself!'))
或者临时禁用更新工作线程(适合单次脚本执行):
with TelegramClient('session_name', api_id, api_hash, update_workers=0) as client: client.loop.run_until_complete(client.send_message('me', 'Hello, myself!'))
2. 排查本地网络NAT/防火墙问题
本机报错但云服务器正常,大概率是本地网络的NAT配置导致MTProto连接时序异常:
- 重启路由器重置NAT会话
- 切换网络(比如WiFi换手机热点)测试
- 临时关闭Ubuntu防火墙验证:
sudo ufw disable(测试后记得重新开启:sudo ufw enable)
3. 降级Telethon版本
部分版本存在消息ID同步bug,尝试降级到稳定版本1.33.0:
pip install telethon==1.33.0
4. 切换MTProto协议版本
改用MTProto v2协议初始化客户端,可能解决ID同步问题:
from telethon import TelegramClient from telethon.network import ConnectionTcpMTProxyRandomizedIntermediate with TelegramClient('session_name', api_id, api_hash, connection=ConnectionTcpMTProxyRandomizedIntermediate) as client: client.loop.run_until_complete(client.send_message('me', 'Hello, myself!'))
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

