@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
  • Вопрос задан
  • 54 просмотра
Решения вопроса 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 что, как по мне, не очень читабельно
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект