@1LIK

Как сделать полное выполнение условия if-elif Python?

Проблема вот здесь:

elif message.text == 'Оценить тебя':
        bot.send_message(message.chat.id, 'Отправьте свою фотографию')
        @bot.message_handler(content_types=['photo'])
        def get_photo(message):
            bot.send_message(message, 'Очень красивая фотография!')

Бот выполняет первый шаг условия, отправка сообщения, но дальше не выполняет саму "оценку"
Весь код ниже:

import telebot
from telebot import types

bot = telebot.TeleBot('TOKEN')
name = 'bot_name'

@bot.message_handler(commands=['start'])
def message_enter(message):
    markup = types.ReplyKeyboardMarkup()
    get_to_know_me = types.KeyboardButton('О боте')
    get_to_know_currency = types.KeyboardButton('Курс валюты')
    rate_you = types.KeyboardButton('Оценить тебя')
    markup.row(get_to_know_me)
    markup.row(get_to_know_currency, rate_you)
    bot.send_message(message.chat.id,
                     f'Привет, {message.from_user.first_name}! Что бы ты хотел сделать?', reply_markup=markup)
    bot.register_next_step_handler(message, on_click)

def on_click(message):
    if message.text == 'О боте':
        bot.send_message(message.chat.id,
                         f'Меня зовут {name}. Я написан для того, чтобы оценивать твои фотографии и давать тебе свежий курс валют')
    elif message.text == 'Курс валюты':
        markup = types.InlineKeyboardMarkup()
        eur = types.InlineKeyboardButton(text='EUR',
                                         url='')
        cny = types.InlineKeyboardButton(text='CNY',
                                         url='')
        usd = types.InlineKeyboardButton(text='USD',
                                         url='')
        markup.row(eur, cny)
        markup.row(usd)
        bot.send_message(message.chat.id, 'Курс какой валюты вы бы хотели посмотреть?',
                         reply_markup=markup)
    elif message.text == 'Оценить тебя':
        bot.send_message(message.chat.id, 'Отправьте свою фотографию')
        @bot.message_handler(content_types=['photo'])
        def get_photo(message):
            bot.send_message(message, 'Очень красивая фотография!')

    bot.register_next_step_handler(message, on_click)

bot.polling(non_stop=True)
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Не надо описывать один обработчик внутри другого.
Это НИКОГДА не будет работать так, как ты этого ожидаешь.
Ответ написан
@wbw1638
Оно не отправляет оценку, потому что функцию get_photo() никто не вызывает
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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