@fhehq

При нажатие на кнопку в Telebot ничего не происходит, как пофиксить, а то не понимаю?

почему когда я выбираю калькулятор, а потом акссесуары, то бот не выводит сообщение, чтобы написали текст с суммой товара

@bot.callback_query_handler(func=lambda call: True)
def callback(call):
    if call.message:
        if call.data == 'rate1':
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text=f'Курс Юаня - {yan} ')
        elif call.data == 'contacts1':
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id,
                                  text='По вопросам доставки, товара писать - @sss_store1 \n По вопросам бота писать - @fhehq')

        elif  call.data == 'calculator1':
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id,
                                  text='Выберите тип вашего товара',
                                  reply_markup=types.InlineKeyboardMarkup().add(
                                      types.InlineKeyboardButton(text='Обувь', callback_data='shoes'),
                                      types.InlineKeyboardButton(text='Аксессуары', callback_data='accessories'),
                                      types.InlineKeyboardButton(text='Одежда', callback_data='clothing')
                                  ))

            @bot.callback_query_handler(func=lambda call: True)
            def handle_callback_query(call):
                if call.data == 'accessories':
                    bot.send_message(chat_id=call.message.chat.id, text='Введите стоимость аксессуаров в юанях')

@bot.message_handler(func=lambda message: True)
def handle_accessories_price(message):
    try:
        amount = float(message.text)

        total_cost = calculate_total_cost_based_on_amount(amount)

        bot.send_message(chat_id=message.chat.id, text=f'Итоговая стоимость аксессуаров с учетом доставки и комиссии: {total_cost}')

    except ValueError:
        bot.send_message(chat_id=message.chat.id, text='Пожалуйста, введите корректную сумму.')

def calculate_total_cost_based_on_amount(amount):
    total_cost = amount * (1 + delivery_cost_percentage + commission_percentage)
    return total_cost
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Aloterra
I?
Потому что у вас любой callback перехватывается первой функцией, советую на каждый callback добавить свою функцию, примерно так

@bot.callback_query_handler(func=lambda call: call.data=='тут значение вашего callback')
def ваша функция


Либо если не хотите писать много функций все callback добавляйте в одну функцию, то бишь этот код:

@bot.callback_query_handler(func=lambda call: True)
def handle_callback_query(call):
if call.data == 'accessories':
bot.send_message(chat_id=call.message.chat.id, text='Введите стоимость аксессуаров в юанях')


Добавляете в вашу первую функцию, но это будет плодить elif что, как по мне, не очень читабельно
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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