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

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

Похожие вопросы