Pyrogram运行报错:SentCodeTypeEmailCode不是有效SentCodeType的解决方法
问题描述
使用Pyrogram开发客户端时,在控制台输入手机号后执行app.run()触发ValueError,错误提示:
<class 'pyrogram.raw.types.auth.sent_code_type_email_code.SentCodeTypeEmailCode'> is not a valid SentCodeType
此前代码可正常运行,错误仅在app.run()时出现,与其他业务逻辑无关。已尝试重新安装Pyrogram和tgcrypto,简化代码后问题仍存在。
完整代码如下:
from pyrogram import Client,filters api_id = 你的api id api_hash = 你的api hash app = Client(name="my_account",api_id=api_id,api_hash= api_hash) regions = ("Дніпропетровська_область","Миколаївська_область","Херсонська_область","Запорізька_область","Одеська_область","Київська_область","Вінницька_область","Черкаська_область","Кіровоградська_область","Донецька_область","Харківська_область","Тернопільська_область","Полтавська_область","Львівська_область","ІваноФранківська_область","Чернівецька_область","Рівненська_область","Волинська_область","Житомирська_область","Закарпатська_область","Сумська_область","Чернігівська_область","Хмельницька_область","Луганська_область") allert = None @app.on_message(filters.all) def allert_hendler(client, mess): global regions global allert txt = mess.text txt2 = txt.split(" ") txt3 = txt2[-1].split("#") region = txt3[1] time = txt2[1] if region in regions: if txt2[0] == "🔴": allert = ["Тривога",1] elif txt2[0] == "🟢": allert = ["Відбій", 0] elif txt2[0] == "🟡": allert = ["частковий відбій",0] app.send_message(chat_id=-786324633,text=f"{allert[1]},{region},{time}") app.run()
解决方案
这个错误是因为Pyrogram稳定版未适配Telegram API新增的邮箱验证码登录类型SentCodeTypeEmailCode,按以下步骤解决:
- 升级到Pyrogram开发版:稳定版更新滞后,直接安装GitHub上的开发分支:
pip install git+https://github.com/pyrogram/pyrogram.git - 删除旧会话文件:删掉项目目录下的
my_account.session文件,重新启动客户端,避免旧会话数据干扰。 - 更新tgcrypto:确保加密库版本和Pyrogram兼容:
pip install --upgrade tgcrypto - 处理邮箱验证:升级后,客户端会自动提示输入邮箱验证码,按要求完成即可,无需修改代码逻辑。
内容的提问来源于stack exchange,提问作者Яблонский Андрей
相关产品推荐
相关产品推荐

