电报机器人-Webhook处于活动状态时无法使用getUpdates方法

问题描述

10分钟后-2小时后我启动机器人时,出现了以下异常:can't use getUpdates method while webhook is active

我已经尝试过删除https://api.telegram.org/bot{token}/deleteWebhook这样的webhook,但没有帮助。

此外,我注意到在引发异常后,漫游器会回复所有带有标签的消息。

here is screenshot

这是机器人主文件的一部分(您可以在我的GitHub上看到整个项目-https://github.com/MartsinovichDanya/Task_manager_telegram

    from telegram.ext import Updater,MessageHandler,Filters,CommandHandler
    from telegram import ReplyKeyboardRemove
    # ...
    updater = Updater(TOKEN)
    
    dp = updater.dispatcher
    
    dp.add_handler(CommandHandler("start",start))
    
    
    # Клавиатура Босса
    dp.add_handler(MessageHandler(Filters.regex('Добавить задачу в проект'),write_proj_add_task))
    dp.add_handler(MessageHandler(Filters.regex('Удалить задачу из проекта'),write_proj_delete_task))
    
    dp.add_handler(MessageHandler(Filters.regex('Проекты'),project_options))
    dp.add_handler(MessageHandler(Filters.regex('Задачи'),task_options))
    dp.add_handler(MessageHandler(Filters.regex('Сотрудники'),employee_options))
    
    dp.add_handler(MessageHandler(Filters.regex('Добавить проект'),write_add_project))
    dp.add_handler(MessageHandler(Filters.regex('Удалить проект'),write_delete_project))
    dp.add_handler(MessageHandler(Filters.regex('Просмотр проектов'),select_project))
    
    dp.add_handler(MessageHandler(Filters.regex('Добавить задачу'),write_add_task))
    dp.add_handler(MessageHandler(Filters.regex('Удалить задачу'),write_delete_task))
    dp.add_handler(MessageHandler(Filters.regex('Просмотр задач'),task_preview))
    
    dp.add_handler(MessageHandler(Filters.regex('Добавить сотрудника'),write_add_employee))
    dp.add_handler(MessageHandler(Filters.regex('Удалить сотрудника'),write_delete_employee))
    dp.add_handler(MessageHandler(Filters.regex('Просмотр сотрудников'),select_employee))
    
    dp.add_handler(MessageHandler(Filters.regex('Главное меню'),start))
    
    dp.add_handler(MessageHandler(Filters.regex('Отчёты по Проектам'),project_report))
    dp.add_handler(MessageHandler(Filters.regex('Отчёты по Задачам'),task_report))
    dp.add_handler(MessageHandler(Filters.regex('Отчёты по Сотрудникам'),employee_report))
    dp.add_handler(MessageHandler(Filters.regex('Отчёты'),report))
    
    
    dp.add_handler(MessageHandler(Filters.regex('Назад'),back_to_report))
    
    
    # Клавиатура сотрудника
    dp.add_handler(MessageHandler(Filters.regex('Просмотр моих задач'),employee_task_preview))
    dp.add_handler(MessageHandler(Filters.regex('Выполнено'),select_done_task))
    
    # Создаём и удаляем тестовый обработчик текстовых сообщений (команд)
    projects_list = []
    employee_list = []
    
    em = EmployeeModel(db.get_connection())
    for e in em.get_all():
        employee_list.append(e[1])
    
    pm = ProjectModel(db.get_connection())
    for p in pm.get_all():
        projects_list.append(p[1])
    
    # Создаём обработчик текстовых сообщений типа Filters.text
    text_handler = MessageHandler(Filters.text,global_function)
    # Регистрируем обработчик в диспетчере.
    dp.add_handler(text_handler)
    
    # Запускаем цикл приема и обработки сообщений
    updater.start_polling()
    
    # Отправляем http запрос
    url = 'https://api.telegram.org/<bot_name_here>:<bot_token_here>/deleteWebhook'
    req = requests.get(url)
    print(req.status_code)
    
    # Ждём завершения приложения при нажатии клавиш Ctrl+C
    updater.idle()

如果有人知道如何解决该问题,请帮助我!

解决方法

您公开发布了令牌,任何人都可以在未经您许可的情况下运行您的机器人。并贴上贴纸或其他任何内容。

只有在未设置Webhooks的情况下,轮询模式(带有getUpdates)只能同时运行一次。好像有人在一段时间后{models = [Vehicle,NavigationRecord] admin.site.register(models) )反复设置了一个网络挂钩。

为避免这种情况-从GitHub删除this file (token)并从代码中删除所有内容。请改用environment variables
并将Environment: Request Method: GET Request URL: http://127.0.0.1:8000/admin/navigation/navigationrecord/add/ Django Version: 2.2.13 Python Version: 3.7.0 Installed Applications: ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','navigation'] Installed Middleware: ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware'] Template error: In template C:\Users\edeni\senior\myenv\lib\site-packages\django\contrib\admin\templates\admin\includes\fieldset.html,error at line 19 __str__ returned non-string (type int) 9 : {% for field in line %} 10 : <div{% if not line.fields|length_is:'1' %} class="fieldBox{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}{% if field.field.is_hidden %} hidden{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}> 11 : {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %} 12 : {% if field.is_checkbox %} 13 : {{ field.field }}{{ field.label_tag }} 14 : {% else %} 15 : {{ field.label_tag }} 16 : {% if field.is_readonly %} 17 : <div class="readonly">{{ field.contents }}</div> 18 : {% else %} 19 : {{ field.field }} 20 : {% endif %} 21 : {% endif %} 22 : {% if field.field.help_text %} 23 : <div class="help">{{ field.field.help_text|safe }}</div> 24 : {% endif %} 25 : </div> 26 : {% endfor %} 27 : </div> 28 : {% endfor %} 29 : </fieldset> Traceback: File "C:\Users\edeni\senior\myenv\lib\site-packages\django\core\handlers\exception.py" in inner 34. response = get_response(request) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\core\handlers\base.py" in _get_response 145. response = self.process_exception_by_middleware(e,request) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\core\handlers\base.py" in _get_response 143. response = response.render() File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\response.py" in render 106. self.content = self.rendered_content File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\response.py" in rendered_content 83. content = template.render(context,self._request) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\backends\django.py" in render 61. return self.template.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 171. return self._render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in _render 163. return self.nodelist.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\loader_tags.py" in render 150. return compiled_parent._render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in _render 163. return self.nodelist.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\loader_tags.py" in render 150. return compiled_parent._render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in _render 163. return self.nodelist.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\loader_tags.py" in render 62. result = block.nodelist.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\loader_tags.py" in render 62. result = block.nodelist.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\defaulttags.py" in render 209. nodelist.append(node.render_annotated(context)) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\loader_tags.py" in render 188. return template.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 173. return self._render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in _render 163. return self.nodelist.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\defaulttags.py" in render 209. nodelist.append(node.render_annotated(context)) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\defaulttags.py" in render 209. nodelist.append(node.render_annotated(context)) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\defaulttags.py" in render 309. return nodelist.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\defaulttags.py" in render 309. return nodelist.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 937. bit = node.render_annotated(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_annotated 904. return self.render(context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render 993. return render_value_in_context(output,context) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\template\base.py" in render_value_in_context 972. value = str(value) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\utils\html.py" in <lambda> 388. klass.__str__ = lambda self: mark_safe(klass_str(self)) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\forms\boundfield.py" in __str__ 33. return self.as_widget() File "C:\Users\edeni\senior\myenv\lib\site-packages\django\forms\boundfield.py" in as_widget 93. renderer=self.form.renderer,File "C:\Users\edeni\senior\myenv\lib\site-packages\django\forms\widgets.py" in render 241. context = self.get_context(name,value,attrs) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\contrib\admin\widgets.py" in get_context 288. 'rendered_widget': self.widget.render(name,attrs),attrs) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\forms\widgets.py" in get_context 678. context = super().get_context(name,attrs) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\forms\widgets.py" in get_context 639. context['widget']['optgroups'] = self.optgroups(name,context['widget']['value'],attrs) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\forms\widgets.py" in optgroups 587. for index,(option_value,option_label) in enumerate(self.choices): File "C:\Users\edeni\senior\myenv\lib\site-packages\django\forms\models.py" in __iter__ 1138. yield self.choice(obj) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\forms\models.py" in choice 1150. return (self.field.prepare_value(obj),self.field.label_from_instance(obj)) File "C:\Users\edeni\senior\myenv\lib\site-packages\django\forms\models.py" in label_from_instance 1216. return str(obj) Exception Type: TypeError at /admin/navigation/navigationrecord/add/ Exception Value: __str__ returned non-string (type int) 文件放入.gitignore文件。

之后,使用@BotFather撤消您的漫游器令牌,并在您使用它的所有位置对其进行更新。