如何跳过Telegram账号启动时的手机号/令牌输入,让脚本持续运行?
解决Telegram多账号脚本跳过授权输入的问题
你的问题出在现有代码只捕获了PhoneNumberInvalidError,但那些需要输入手机号/机器人令牌的session,会抛出未授权类异常(比如AuthorizationRequiredError、PhoneNumberRequiredError),这些没被捕获,导致脚本卡在输入步骤。要实现跳过这类账号,只需要扩展异常捕获范围,或者提前判断session是否已授权。
修改后的代码示例
for f in glob.iglob("*.session"): name_file = f.rsplit('.', 1)[0] print(name_file) try: client = TelegramClient(session=name_file, api_id=api_id, api_hash=api_hash) # 先尝试连接,提前检测是否需要授权 await client.connect() if not client.is_user_authorized(): print(f"账号 {name_file} 未授权,跳过") await client.disconnect() continue await send_mes_to_users(client) await client.disconnect() except (errors.rpcerrorlist.PhoneNumberInvalidError, errors.rpcerrorlist.AuthorizationRequiredError, errors.rpcerrorlist.PhoneNumberRequiredError): print(f"账号 {name_file} 无法自动登录,跳过") continue
关键修改点
- 提前调用
client.connect()并通过is_user_authorized()判断账号是否已完成授权,未授权直接跳过,避免触发输入流程 - 扩展异常捕获列表,把所有需要手动输入授权的异常都包含进去,确保脚本不会卡在输入环节
- 用完client后调用
disconnect(),避免资源占用
内容的提问来源于stack exchange,提问作者Сергей Викторович
相关产品推荐
相关产品推荐

