我可以使用 pyTelegramBotAPI 创建嵌套 @bot.message_handler() 吗?

问题描述 投票:0回答:1

我最近决定尝试创建一个机器人电报并为此选择 pyTelegramBotAPI。

现在,我尝试使用函数装饰器 @telebot.message_handeler() 和 if/elif/else 语法与机器人创建多菜单消息聊天,但嵌套的聊天不会显示来自机器人的消息。

我有一个想法:

  1. 当用户使用 InlineReplyKeyboardMarkup 选择“device_problem_forum”时
  2. 机器人问他们,“他们的什么设备有问题?”
  3. 他们通过 ReplyKeyboardMarkup 选择设备
  4. 机器人询问“某个区域的问题”
  5. 他们通过 ReplyKeyboardMarkup 选择一个区域
  6. 机器人返回问题列表
  7. 他们通过 ReplyKeyboardMarkup 选择问题
        ### Create the FAQ for device problem page 
        if call.data == "device_problem_forum": 
            import device_problem_page 
            bot.send_message(call.message.chat.id, 'Хорошо👩‍💻, Давайте решим на каком устройстве проблема?', reply_markup=device_problem_page.device_problem())
            @bot.message_handler(func=lambda message: True)
            def (message):
                # Question 1
                if message.text == "💻":
                    bot.send_message(call.message.chat.id, 'Какая проблема с 💻', reply_markup=device_problem_page.computer_problem())
                    @bot.message_handler(func=lambda message: True)
                    def problems(message):
                        if message.text == "Установка приложений":
                            bot.send_message(call.message.chat.id, 'Какое приложение установить надо ?', reply_markup=device_problem_page.instalation_problem())

所以,请解释一下我做错了什么?或者我需要为此使用其他 Telegram API ??????

我尝试放置 if/elif 语句,尝试获取 message.message_id 属性的文本并进行比较。 也尝试使用 call.message.text 仍然没有结果

python telegram py-telegram-bot-api
1个回答
0
投票

使用

bot.register_next_step_handler(message, next_step_function)

效果最好

在这种情况下, next_step_function 将在调用第一个函数后立即调用,但 next_step_function 将独立,不会嵌套或前面有装饰器。

这是一个例子

© www.soinside.com 2019 - 2024. All rights reserved.