Задать вопрос
@qw1klyy

Почему тг бот неправильно принимает сообщение?

@bot.message_handler(commands=['start'])
def start(message):
    button = types.InlineKeyboardMarkup(row_width=1)
    button1 = types.InlineKeyboardButton(' Меню ', callback_data='menu')
    button2 = types.InlineKeyboardButton('☎ Связаться с оператором ☎', callback_data='oper')
    button3 = types.InlineKeyboardButton(' Адрес ', callback_data='adress')
    button4 = types.InlineKeyboardButton(' Доставка ', callback_data='dostavka')
    button.add(button1,button2,button3,button4)
    bot.send_message(message.chat.id, f'Здравствуйте, {message.from_user.first_name}\nВ этом боте вы можете оформить заказ в нашем ресторане!\nПриятного аппетита!', reply_markup=button)
@bot.callback_query_handler(func=lambda call: call.data in ['menu','oper','adress','dostavka'])
def call(callback):
    if callback.message:
        if callback.data=='oper':
            buton=types.InlineKeyboardMarkup(row_width=1)
            buton1=types.InlineKeyboardButton(' Назад ', callback_data='back')
            buton.add(buton1)
            @bot.message_handler(content_types='text')
            def us(message):
                bot.send_message(message.chat.id, 'проверка')
            bot.send_message(callback.message.chat.id, f'Оператор  ➡  +7(926)448-92-57\n\nДиректор  ➡  +7(926)610-60-02', reply_markup=buton)
@bot.callback_query_handler(func=lambda call: call.data in ['back'])
def call(callback):
    if callback.message:
        if callback.data=='back':
            button = types.InlineKeyboardMarkup(row_width=1)
            button1 = types.InlineKeyboardButton(' Меню ', callback_data='menu')
            button2 = types.InlineKeyboardButton('☎ Связаться с оператором ☎', callback_data='oper')
            button3 = types.InlineKeyboardButton(' Адрес ', callback_data='adress')
            button4 = types.InlineKeyboardButton(' Доставка ', callback_data='dostavka')
            button.add(button1, button2, button3, button4)
            bot.send_message(callback.message.chat.id,f' Выберите действие: ', reply_markup=button)
bot.polling(none_stop=True)

Когда я выберу "Связаться с оператором" и напишу что то и потом опять запущу бота "/start" и напишу что то он опять ответит "проверка". Почему так? Бот же должен принимать сообщение в ветке с условием, когда значение нажатой кнопки равна "oper"
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
@bot.message_handler(content_types='text')
            def us(message):
                bot.send_message(message.chat.id, 'проверка')

Не надо объявдять обработчики событий по ходу дела, это не будет работать так, как ты ожидаешь.
Ищи другие средства, какие - зависит от библиотеки. В случае telebot это register_next_step_handler(), в репозитории либы есть пример.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы