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

Telethon登录会话未保存问题及正确登录方法咨询

Telethon登录Telegram的问题分析与正确方法

问题原因分析

  1. 全局登出所有会话:首次登录时,Telegram会提示是否终止所有其他设备的会话,你可能输入了y确认该操作,导致所有官方客户端和其他设备的会话被强制登出。这是Telegram的安全验证机制,并非代码错误,但会影响现有设备的登录状态。
  2. 重启无法自动登录:
    • 会话文件(Test2Session.session)可能因权限问题未被正确写入,或因之前的全局登出操作导致会话凭证失效。
    • 短时间内多次请求验证码触发Telegram的频率限制,导致无法接收验证码。
  3. 修改会话名称后重复问题:每次修改会话名称相当于创建新的会话文件,重新触发登录流程,若仍选择终止其他会话,自然会重复之前的问题。

正确登录步骤与代码优化

1. 避免全局登出其他会话

首次登录时,当终端出现以下提示:

Terminate all other sessions? (y/N)
务必输入N并回车,这样不会注销现有设备的Telegram会话。

2. 优化代码确保会话正确加载

使用指定phone参数的方式调用start(),确保会话存在时自动加载,不存在时引导正确登录:

from telethon import TelegramClient
import asyncio

# 替换为你在my.telegram.org获取的API信息和手机号
api_id = 123456
api_hash = 'abcdef1234567890abcdef1234567890'
phone = '+8613800138000'  # 带国家码的手机号

async def main():
    # 会话文件会自动保存在当前运行目录,命名为Test2Session.session
    client = TelegramClient('Test2Session', api_id, api_hash)
    
    # 指定phone参数,自动处理登录流程:会话存在则直接登录,不存在则提示输入验证码
    await client.start(phone=phone)

    # 验证登录成功并输出账号信息
    me = await client.get_me()
    print(f"登录成功,账号信息:\n{me.stringify()}")

    # 保持客户端运行(若需长期使用,比如监听消息,可保留此句)
    await client.run_until_disconnected()

if __name__ == '__main__':
    asyncio.run(main())

3. 解决无法接收验证码的问题

  • 若短时间内多次请求验证码被限制,先通过官方Telegram客户端登录账号,解除风险限制后再尝试用Telethon登录。
  • 确保手机号能正常接收Telegram的验证码短信或语音验证码。

4. 会话文件的注意事项

  • 确保会话文件所在目录有读写权限,Python进程能正常写入和读取该文件。
  • 不要随意删除会话文件,否则需要重新登录。若会话文件失效(比如账号密码修改、会话被强制注销),删除会话文件后重新登录即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:35:11