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

如何检查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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:45:09