local variable 'number_order' referenced before assignment

Рейтинг: -7Ответов: 1Опубликовано: 24.06.2023
@client.callback_query_handler(func=lambda callback:True)
def callback_message(callback):
    markup = types.InlineKeyboardMarkup()
    markup_r = types.ReplyKeyboardMarkup(resize_keyboard=True)
    menubtn = types.KeyboardButton('В меню')
    markup.add(types.InlineKeyboardButton('Закончить заказ', callback_data='order_is_done'))

    if callback.data == 'add_order':
        number_order = random.choice(orders)
        client.send_message(callback.message.chat.id, f'Вы приняли заказ номер - {number_order}', reply_markup=markup)
    if callback.data == 'order_is_done':
        markup_r.add(menubtn)
        client.send_message(callback.message.chat.id, f'Заказ номер - {number_order} успешно выполнен!', reply_markup=markup_r)

Ответы

▲ 0

Вы создаёте переменную внутри одной проверки, а используете в другой:

    if callback.data == 'add_order':
        number_order = random.choice(orders)  # Создание
        client.send_message(callback.message.chat.id, f'Вы приняли заказ номер - {number_order}', reply_markup=markup)
    if callback.data == 'order_is_done':
        markup_r.add(menubtn)
        client.send_message(callback.message.chat.id, f'Заказ номер - {number_order} успешно выполнен!', reply_markup=markup_r)
        #                                                Использование ^^^^^^^^^^^^

и она не всегда оказывается определена.