如何修复使用Pyrogram时出现的a coroutine was expected报错?
错误原因
loop.create_task()要求传入协程对象,你当前版本的Pyrogram中app.start()调用后直接返回Client实例对象,并非协程对象,因此触发类型错误。
修复方案
方案1:使用Pyrogram自带运行入口(推荐)
Pyrogram内置了run()方法自动管理事件循环的完整生命周期,无需手动维护事件循环,代码可简化为:
from pyrogram import Client app = Client( "aaaaa", bot_token="token", api_id=12, api_hash="a" ) app.run()
方案2:手动管理事件循环
如果你需要自定义事件循环逻辑,将启动逻辑封装为异步函数,通过asyncio.run执行即可:
import asyncio from pyrogram import Client async def main(): app = Client( "aaaaa", bot_token="token", api_id=12, api_hash="a" ) # 异步等待客户端启动完成 await app.start() # 按需添加其他业务逻辑,此处用永久等待保持客户端运行 await asyncio.Event().wait() if __name__ == "__main__": asyncio.run(main())
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

