stik3228
@stik3228

Почему if, else вот так не работает?

Если пишу слово "текст"
bot.register_next_step_handler(call.message, location)
не срабатывает, перекидывает все равно в
bot.register_next_step_handler(call.message, get_weather)
И как можно написать что я хочу передать не название города, а локацию, что бы при вводе локации перекидывало в def location?
@bot.callback_query_handler(func = lambda call: True)
def answer(call):
    markup_reply = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item_geo = types.KeyboardButton(text="Отправить местоположение", request_location=True)
    item_moscow = types.KeyboardButton("Москва")
    if call.data == 'weather':
        markup_reply.add(item_geo,  item_moscow,)
        bot.send_message(call.message.chat.id, 'Напиши город или выбери из списка', reply_markup = markup_reply)
        if call.message.text == 'текст':
            bot.register_next_step_handler(call.message, location)
        else:  
            bot.register_next_step_handler(call.message, get_weather)
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 2
@twistfire92
Python backend developer
Вам надо пользоваться InlineKeyboardMarkup и InlineButton соответственно.

Перекидывает вас в get_weather не когда вы пишите 'text', а еще раньше, когда нажимаете inline кнопку с callback_data == 'weather'. Либо еще в каком-то месте, которое вы не показали в своем вопросе.
Ответ написан
Комментировать
SoreMix
@SoreMix Куратор тега Python
yellow
Потому что неправильно используете register_next_step_handler

Первый аргумент - объект сообщения, который вы получаете при отправке. Смотрите примеры:
https://github.com/eternnoir/pyTelegramBotAPI/blob...

msg = bot.send_message(call.message.chat.id, 'Напиши город или выбери из списка', reply_markup = markup_reply)
bot.register_next_step_handler(msg, location)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы