Telegram Bot异步改造遇RuntimeWarning报错求解决(新手向)
在Telegram Bot中使用异步消息处理函数
问题原因
你用的telebot默认是同步版本,直接把消息处理函数改成async def后,同步的bot.polling()无法正确执行异步函数,导致出现RuntimeWarning错误。
解决步骤(新手友好版)
- 升级依赖库
确保你安装的pyTelegramBotAPI是支持异步的最新版本,打开终端执行:
pip install pytelegrambotapi --upgrade
- 修改为异步代码结构
把原来的同步代码改成以下形式,核心是用异步专用的Bot类+异步事件循环运行:
import telebot import asyncio # 替换成异步专用的AsyncTeleBot类 bot = telebot.AsyncTeleBot("你的TOKEN") @bot.message_handler(func=lambda newMessage: True) async def main(newMessage): print(newMessage) # 这里可以放心使用await调用你的异步函数,比如: # await 你的异步函数名() # 将polling操作放入异步函数 async def run_bot(): await bot.polling() # 启动异步事件循环 if __name__ == "__main__": asyncio.run(run_bot())
关键改动说明
AsyncTeleBot:库专门提供的异步Bot类,能识别并正确执行你的异步消息处理函数asyncio.run():Python自带的异步工具,用来启动整个异步程序的事件循环,确保所有异步代码都能被正常执行- 现在你可以在
main函数里自由使用await调用其他异步函数,不会再出现警告或报错
内容的提问来源于stack exchange,提问作者Amin
相关产品推荐
相关产品推荐

