Telegram Bot Error Code 409:单实例运行仍触发冲突报错求助
Telegram Bot 409错误排查求助
运行以下代码时,尽管已确认只有一个本地进程调用infinity_polling(),仍触发Error Code 409报错。查阅相关帖子后,未找到匹配场景或有效解决方案。
环境信息
- MacOS Ventura 13.5
- VSCode 1.81.1 (Universal)
- 项目使用pyenv 2.3.24管理Python 3.9.12
- pip3已安装pyTelegramBotAPI 4.13.0和telebot 0.0.5,同事仅安装pyTelegramBot 4.9.0即可正常运行
- pip版本23.2.1
- 团队其他成员在不同机器运行同款代码无问题
已尝试的解决方法
- 重启电脑
- 在活动监视器中终止所有Python和VSCode进程
- 删除本地仓库并重新克隆
- 卸载并重装pyTelegramBotAPI和telebot
- 注释循环导入语句(TelegramBot.py→helper.py→fileNo2.py→TelegramBot.py),无改善
- 改用同事的pyTelegramBotAPI 4.9.0版本并卸载telebot,无效
- 在
bot.infinity_polling()前添加bot.remove_webhook()调用,无效
希望避免的操作
- 不想创建新的token或Telegram Bot,这会给团队协作带来困扰
疑问
- 多实例运行问题仅存在于本地吗?即不同机器同时调用getUpdates是否允许,同一机器多个进程则不行?
- 重启电脑后为何仍有其他进程调用
bot.infinity_polling()?重启不是会终止所有进程吗?
代码
import telebot import emoji import sys import Helpers.helper as helper TOKEN = '*************************************' bot = telebot.TeleBot(TOKEN, parse_mode=None) @bot.message_handler(commands=['help']) def send_welcome(message): bot.reply_to(message, "// List of commands for the bot") if __name__ == '__main__': try: print("before call to IP") bot.infinity_polling() print("after call to IP") except (KeyboardInterrupt, SystemExit): pass
终端输出(按Ctrl-C终止)
before call to IP 2023-08-26 14:40:01,906 (__init__.py:1083 MainThread) ERROR - TeleBot: "Threaded polling exception: A request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running" 2023-08-26 14:40:01,906 (__init__.py:1085 MainThread) ERROR - TeleBot: "Exception traceback: Traceback (most recent call last): File "/Users/anonymous/.pyenv/versions/3.9.12/lib/python3.9/site-packages/telebot/__init__.py", line 1073, in __threaded_polling polling_thread.raise_exceptions() File "/Users/anonymous/.pyenv/versions/3.9.12/lib/python3.9/site-packages/telebot/util.py", line 108, in raise_exceptions raise self.exception_info File "/Users/anonymous/.pyenv/versions/3.9.12/lib/python3.9/site-packages/telebot/util.py", line 90, in run task(*args, **kwargs) File "/Users/anonymous/.pyenv/versions/3.9.12/lib/python3.9/site-packages/telebot/__init__.py", line 649, in __retrieve_updates updates = self.get_updates(offset=(self.last_update_id + 1), File "/Users/anonymous/.pyenv/versions/3.9.12/lib/python3.9/site-packages/telebot/__init__.py", line 623, in get_updates json_updates = apihelper.get_updates(self.token, offset, limit, timeout, allowed_updates, long_polling_timeout) File "/Users/anonymous/.pyenv/versions/3.9.12/lib/python3.9/site-packages/telebot/apihelper.py", line 321, in get_updates return _make_request(token, method_url, params=payload) File "/Users/anonymous/.pyenv/versions/3.9.12/lib/python3.9/site-packages/telebot/apihelper.py", line 162, in _make_request json_result = _check_result(method_name, result) File "/Users/anonymous/.pyenv/versions/3.9.12/lib/python3.9/site-packages/telebot/apihelper.py", line 189, in _check_result raise ApiTelegramException(method_name, result, result_json) telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running " ^C2023-08-26 14:40:03,895 (__init__.py:966 MainThread) ERROR - TeleBot: "Infinity polling: polling exited" 2023-08-26 14:40:03,895 (__init__.py:968 MainThread) ERROR - TeleBot: "Break infinity polling" after call to IP
内容的提问来源于stack exchange,提问作者anonimo
相关产品推荐
相关产品推荐

