gpt4 book ai didi

python - Telegram 机器人 - 在 webhook 处于事件状态时无法使用 getUpdates 方法

转载 作者:行者123 更新时间:2023-12-05 06:12:21 35 4
gpt4 key购买 nike

当我在 10 分钟后启动机器人时 - 2 小时出现异常:在 webhook 处于事件状态时无法使用 getUpdates 方法

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

此外,我注意到在引发异常后,机器人会使用标签回复任何消息。 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()

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

最佳答案

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

轮询模式(使用 getUpdates)只能同时运行一次,并且只有在未设置 Webhooks 的情况下。并且看起来有人在一段时间后(10 分钟 - 2 小时)反复设置 webhook。

为避免这种情况 - 删除 this file (token)来自 GitHub 并从代码中删除所有内容。使用 environment variables相反。
并将token文件放入.gitignore文件。

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

关于python - Telegram 机器人 - 在 webhook 处于事件状态时无法使用 getUpdates 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63649785/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com