繁体   English   中英

Telegram bot - 在 webhook 处于活动状态时无法使用 getUpdates 方法

[英]Telegram bot - can't use getUpdates method while webhook is active

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

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

另外,我注意到在引发异常后,bot 会回复带有贴纸的任何消息。 这是截图

这是机器人主文件的一部分(整个项目你可以在我的 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()

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

您公开发布了您的令牌,任何人都可以在未经您许可的情况下运行您的机器人。 还可以回复贴纸或其他任何东西。

轮询模式(使用 getUpdates)只能同时运行一次,并且仅当未设置 Webhooks 时。 并且看起来有人在一段时间( 10 minutes - 2 hours )后反复设置网络钩子。

为避免这种情况 - 从 GitHub 中删除此文件 ( token )并从代码中删除所有位置。 改用环境变量
并将token文件放入.gitignore文件。

之后使用@BotFather撤销您的机器人的令牌并在您使用它的任何地方更新它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM