如何检查Telethon StringSession是否有效?避免自动触发登录流程
如何校验Telethon StringSession有效性并避免自动触发命令行登录
方法一:提前校验会话有效性
直接尝试调用轻量API接口验证会话状态,同时禁用自动登录流程,避免命令行弹出登录提示:
- 核心思路:通过
connect()建立连接,调用get_me()验证会话权限,捕获对应异常判断有效性 - 代码示例:
from telethon import TelegramClient from telethon.errors import AuthKeyUnregisteredError, SessionPasswordNeededError # 替换成你的实际参数 API_ID = 123456 API_HASH = "your_api_hash_here" SESSION_STRING = "your_session_string_here" client = TelegramClient( SESSION_STRING, API_ID, API_HASH, auto_reconnect=False, sequential_updates=False ) async def check_session(): try: await client.connect() # 调用get_me验证会话是否有效 await client.get_me() print("会话有效") return True except AuthKeyUnregisteredError: print("会话已被吊销,无法使用") return False except SessionPasswordNeededError: print("会话需要两步验证密码") return False except Exception as e: print(f"验证失败:{str(e)}") return False finally: await client.disconnect() # 执行校验 import asyncio asyncio.run(check_session())
- 关键异常说明:
AuthKeyUnregisteredError就是会话被吊销时抛出的错误,精准捕获即可判断会话无效;SessionPasswordNeededError对应账号开启两步验证的场景,可根据业务需求处理。
方法二:禁用自动登录流程,连接时直接返回错误
如果你需要直接尝试连接但不想让Telethon自动触发命令行登录,不要使用client.start()(该方法会自动启动登录流程),改用client.connect()配合异常捕获:
- 只要会话无效,
connect()后调用API会直接抛出异常,不会弹出命令行的登录提示; - 这种方式适合在GUI中处理连接逻辑,当捕获到
AuthKeyUnregisteredError时,直接在GUI中提示用户重新登录即可。
内容的提问来源于stack exchange,提问作者Mudit Jain
相关产品推荐
相关产品推荐

