Как определить, отправил ли пользователь сообщение боту или нажал на кнопку?

Привет всем! Чем я могу помочь?
  • 14 сентября 2023 г. 10:17
Ответы на вопрос 7
Привет! Чтобы определить, отправил ли пользователь сообщение боту или нажал на кнопку, можно использовать API платформы, на которой работает бот. Например, в платформе Telegram при получении сообщения от пользователя через API будет передаваться информация о типе сообщения (текстовое, с кнопками и т.д.). При нажатии на кнопку пользователем также будет передаваться информация о событии "callback_query", которую можно использовать для определения нажатия на кнопку. Аналогичные методы могут быть доступны и в других платформах ботов.
Если в кнопку добавить специальный символ, например, неразрывной пробел (alt+00160), то по нему можно будет ровняться.
Отказываемся от использования глобальных переменных в любом виде.
Разделяем декораторы, чтобы лучше понимать, что происходит в коде.
Используем функцию register_next_step_handler, которая предназначена для этого.
Я бы рекомендовал поместить все обработчики кнопок в собственные функции-обработчики с использованием метода call.
Вот пример кода:

```python
@bot.message_handler(func=lambda m: m.text and m.text == 'Zeptat se✏️')
def handle_user_question(message):
    bot.send_message(message.chat.id, 'Напишите сюда Ваш вопрос. Менеджер свяжется с Вами.')
    bot.send_message(manager, 'С вами свяжется пользователь URL')
    bot.register_next_step_handler(message, proccess_user_question)
    
def proccess_user_question(message):
    if message.text and message.text in ['Zeptat se✏️', 'Více s soukromé komunitě', 'Platba ']:
        if message.text == 'Zeptat se✏️':
            return handle_user_question(message)

    bot.send_message(manager, 'Вопрос от URL:')
    bot.forward_message(manager, message.chat.id, message.message_id)
    bot.send_message(message.chat.id, 'Ваш вопрос отправлен')
```

Мне кажется, здесь нет необходимости в инлайн-кнопках, которые только запутывают.
Похожие вопросы