Telethon调用send_message出现coroutine未await的RuntimeWarning如何解决
报错原因
client.send_message是Telethon提供的异步协程方法,必须搭配await关键字等待执行,直接同步调用会抛出coroutine was never awaited的运行时警告,方法也不会实际执行。
修正方案
调整代码的异步执行逻辑,修改内容如下:
- 将原同步
main函数改为异步函数,添加async关键字 - 调用
client.start()、client.send_message()、client.run_until_disconnected()等异步方法时,前面添加await关键字 - 用
asyncio.run()启动异步主函数
完整可运行代码
import random import asyncio from telethon import TelegramClient, events async def main(): api_id = 9123640 api_hash = '8as6fgvs8t9ar76fse89rgearz' chat = '@username' message = 'hi' client = TelegramClient('afewfe', api_id, api_hash) @client.on(events.NewMessage(chats=chat)) async def normal_handler(event): if event.message.button_count == 4: await event.message.click(random.randint(0, 3)) await client.disconnect() await client.start() await client.send_message(chat, message) await client.run_until_disconnected() if __name__ == '__main__': asyncio.run(main())
兼容说明
如果你使用的Python版本低于3.7,asyncio.run()不可用,可以将最后一行替换为:
client.loop.run_until_complete(main())
内容的提问来源于stack exchange,提问作者fgrd4035
相关产品推荐
相关产品推荐

