簡體   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