@Loknut

Почему не обрабатывается следующий handler?

@bot.message_handler(commands=['start'])  
def welcome(message):
    sti = open('imagine/sticker.webp', 'rb')
    bot.send_sticker(message.chat.id, sti)

    #КЛАВИАТУРА 1
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard =True)
    item = types.KeyboardButton("\N{world map}")

    markup.add(item)

    bot.send_message(message.chat.id, "Привет! /help".format(message.from_user,bot.get_me()),
                     parse_mode='html', reply_markup=markup)

@bot.message_handler(commands=['help'])
def hi1(message):
    bot.send_message (message.chat.id, "Наберите команду /go или /we")
        

@bot.message_handler(content_types=['text'])
def hi(message):
    if message.chat.type == 'private':
        if message.text == '\N{world map}':
             mesg = bot.send_message(message.chat.id, 'наберите команду /go')
             if message.text == '/go':
                 bot.register_next_step_handler(mesg, go)
        else:
            bot.send_message(message.chat.id, 'Не знаю, что и ответить \N{anguished face} \nНабери команду /help, чтобы ознакомиться со списком команд')


@bot.message_handler(commands=['go'])
def go(message):
    
    #КЛАВИАТУРА 2
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard =True)
    item1 = types.KeyboardButton("\N{baby}")
    item2 = types.KeyboardButton("\N{girl}")
    item3 = types.KeyboardButton("\N{man}")

    markup.add(item1, item2, item3)
    
    bot.send_message(message.chat.id, "Возраст?", reply_markup=markup)
    bot.register_next_step_handler(go1)

def go1(message):
    if message.chat.type == 'private':
        if message.text == '\N{baby}':

             #КЛАВИАТУРА 3
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard =True)
            item1 = types.KeyboardButton("игры")
            item2 = types.KeyboardButton("деньги")
            item3 = types.KeyboardButton("телки")

            markup.add(item1, item2, item3)
        
            bot.send_message(message.chat.id, 'Окей, кого вы любите больше?')
            
bot.polling(none_stop=True)

Не обрабатывается команда /go. Пользователю высвечивается «не знаю, что ответить». Как исправить?
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 1
InternetMaster
@InternetMaster
Интернет
Потому что у тебя обработчик команды /go находится ниже обработчика текста. Команда /go относится к тексту, если обработчик не ловит эту команду раньше текста. Просто поднимите обработчик команды.

@bot.message_handler(commands=['start'])  
def welcome(message):
    sti = open('imagine/sticker.webp', 'rb')
    bot.send_sticker(message.chat.id, sti)

    #КЛАВИАТУРА 1
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard =True)
    item = types.KeyboardButton("\N{world map}")

    markup.add(item)

    bot.send_message(message.chat.id, "Привет! /help".format(message.from_user,bot.get_me()),
                     parse_mode='html', reply_markup=markup)

@bot.message_handler(commands=['help'])
def hi1(message):
    bot.send_message (message.chat.id, "Наберите команду /go или /we")
        
@bot.message_handler(commands=['go'])
def go(message):
    
    #КЛАВИАТУРА 2
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard =True)
    item1 = types.KeyboardButton("\N{baby}")
    item2 = types.KeyboardButton("\N{girl}")
    item3 = types.KeyboardButton("\N{man}")

    markup.add(item1, item2, item3)
    
    bot.send_message(message.chat.id, "Возраст?", reply_markup=markup)
    bot.register_next_step_handler(go1)

@bot.message_handler(content_types=['text'])
def hi(message):
    if message.chat.type == 'private':
        if message.text == '\N{world map}':
             mesg = bot.send_message(message.chat.id, 'наберите команду /go')
             if message.text == '/go':
                 bot.register_next_step_handler(mesg, go)
        else:
            bot.send_message(message.chat.id, 'Не знаю, что и ответить \N{anguished face} \nНабери команду /help, чтобы ознакомиться со списком команд')


def go1(message):
    if message.chat.type == 'private':
        if message.text == '\N{baby}':

             #КЛАВИАТУРА 3
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard =True)
            item1 = types.KeyboardButton("игры")
            item2 = types.KeyboardButton("деньги")
            item3 = types.KeyboardButton("телки")

            markup.add(item1, item2, item3)
        
            bot.send_message(message.chat.id, 'Окей, кого вы любите больше?')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 23:39
3000 руб./за проект
30 апр. 2024, в 23:32
1500 руб./за проект
30 апр. 2024, в 22:44
500 руб./в час