не могу сделать кнопки через калбек дату

Рейтинг: 2Ответов: 1Опубликовано: 22.06.2023
import telebot
from telebot import types

bot = telebot.TeleBot('ТОКЕН')


@bot.message_handler(commands=['start'])
def main(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton('♾️Выбрать товар♾️', callback_data='tovar'))
    markup.add(types.InlineKeyboardButton('🎃Отзывы магазина🎃', url='https://t.me/yoki_cmd_channel'))
    markup.add(types.InlineKeyboardButton('💼Другие услуги💼', url='https://t.me/yoki_cmd'))
    bot.send_message(message.chat.id, '🙌Привет! Это бот для покупки моих услуг.🙌', reply_markup=markup)


@bot.callback_query_handler(func=lambda callback: True)
def callback_message(callback):
    if callback.data == 'tovar':
        @bot.message_handler()
        def main_1():
            markup = types.InlineKeyboardMarkup()
            markup.add(types.InlineKeyboardButton('♾️Простой бот♾️', callback_data='text'))
            markup.add(types.InlineKeyboardButton('🎃Сложный бот🎃', url='https://www.youtube.com/watch?v=czzRawdEcKI'))
            markup.add(types.InlineKeyboardButton('💼Экспресс бот💼', url='https://www.youtube.com/'))
        bot.send_message(callback.message.chat.id, '👀Какой желаете выбрать товар? Нажмите ниже.👀')
    elif callback.data == 'text':
        bot.send_message(callback.message.chat.id, '123123')


bot.polling(none_stop=True)

хочу сделать так, что бы когда пользователь нажимал на "выбрать товар", ему высвечивалось сообщение "какой желаете выбрать товар" с 3 кнопками "простой бот, сложный бот, экспресс бот" они тупо не высвечиваются, ошибок пайчарм не показывает, помогите пожалуйста

Ответы

▲ 1

Попробуйте сделать так:

import telebot
from telebot import types

bot = telebot.TeleBot('СВОЙ ТОКЕН ВСТАВЬТЕ СЮДА')


@bot.message_handler(commands=['start'])
def main(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton('♾️Выбрать товар♾️', callback_data='tovar'))
    markup.add(types.InlineKeyboardButton('🎃Отзывы магазина🎃', url='https://t.me/yoki_cmd_channel'))
    markup.add(types.InlineKeyboardButton('💼Другие услуги💼', url='https://t.me/yoki_cmd'))
    bot.send_message(message.chat.id, '🙌Привет! Это бот для покупки моих услуг.🙌', reply_markup=markup)


@bot.callback_query_handler(func=lambda callback: True)
def callback_message(callback):
    if callback.data == 'tovar':
        markup = types.InlineKeyboardMarkup()
        markup.add(types.InlineKeyboardButton('♾️Простой бот♾️', callback_data='text'))
        markup.add(types.InlineKeyboardButton('🎃Сложный бот🎃', url='https://www.youtube.com/watch?v=czzRawdEcKI'))
        markup.add(types.InlineKeyboardButton('💼Экспресс бот💼', url='https://www.youtube.com/'))
        bot.send_message(callback.message.chat.id, '👀Какой желаете выбрать товар? Нажмите ниже.👀', reply_markup=markup)
    elif callback.data == 'text':
        bot.send_message(callback.message.chat.id, '123123')


bot.polling(none_stop=True)

В этом коде необязателен ещё один хэндлер @bot.message_handler() и функция main_1. Иначе, бот будет пытаться сделать кнопки после того, как пользователь отправил ещё какой-то текст.