You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telethon切换主机后出现AuthKeyUnregisteredError问题求助

解决Telethon AuthKeyUnregisteredError会话自动终止问题

问题描述

我用Telethon开发的用户机器人原本运行正常,将其部署到德国主机并登出赫尔辛基旧主机的会话后,每次在新主机或本地运行机器人都会触发AuthKeyUnregisteredError,报错时会自动终止所有会话。启动机器人输入验证码后一切正常,但运行2-5分钟(时长不定)、机器人处理操作时,会出现如下日志:

2023-09-09 19:48:14,685 - telethon.client.updates - INFO - Cannot get difference since the account is not logged in: AuthKeyUnregisteredError

尝试过删除旧会话数据库,将代码中client = TelegramClient('anon', api_id, api_hash)修改为client = TelegramClient('userbot', api_id, api_hash),重复操作近10次仍未解决。

解决方案

  • 彻底清理所有旧会话文件
    不要只修改会话文件名,需找到Telethon存储会话的目录,彻底删除所有以.session、.session-journal结尾的文件:

    • Linux:~/.local/share/Telethon/ 或机器人运行的当前目录
    • Windows:C:\Users\<你的用户名>\AppData\Roaming\Telethon\ 或当前运行目录
    • macOS:~/Library/Application Support/Telethon/ 或当前运行目录
  • 强制重新生成AuthKey
    初始化客户端时添加force_sessions=True参数,强制创建全新会话文件,避免复用残留的旧AuthKey信息:

    client = TelegramClient('userbot', api_id, api_hash, force_sessions=True)
    
  • 排查多会话冲突
    登录Telegram官方客户端,进入「设置」-「设备」,查看所有已登录设备,移除旧主机或陌生设备,确保没有其他进程/设备使用同一API ID和账号登录。

  • 捕获更新模块异常避免会话终止
    报错来自更新模块的get difference操作,可在代码中捕获该异常,实现自动重连:

    from telethon.errors import AuthKeyUnregisteredError
    
    @client.on(events.NewMessage)
    async def handler(event):
        try:
            # 你的业务逻辑代码
            await event.reply("处理中...")
        except AuthKeyUnregisteredError:
            await client.disconnect()
            await client.start(phone='你的手机号')
    
  • 检查主机网络与Telegram DC连通性
    德国主机可能存在网络波动导致会话失效,可测试api.telegram.org的连通性,或手动切换Telegram数据中心(DC):

    from telethon import TelegramClient, connection
    
    # 指定DC初始化客户端(示例为DC2)
    client = TelegramClient('userbot', api_id, api_hash, connection=connection.ConnectionTcpFull(ipv6=False, dc_id=2))
    

内容的提问来源于stack exchange,提问作者Damir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:42:39