Уведомления

Группа в Telegram: @pythonsu

#1 Март 8, 2022 13:10:07

Merty
Зарегистрирован: 2022-01-14
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

тг бот на библиотке телебот

Короче не могу понять как правильно разделить 2 и 3 функцию чтоб работала можете пожалуйста помочь

 import telebot
from telebot import types
from configure import token
bot = telebot.TeleBot(token)
class food():
    def __init__(self, name, price, description):
        self.name = name
        self.price = price
        self.des = description
sa1 = food('Цезарь с куриной грудкой', '560', '')
sa2 = food('Цезарь с креветками', '635', '')
sa3 = food('Салат с тунцом и грейпфрутом', '645', 'Освежающий салат с кусочками свежего тунца, дольками грейпфрута, черри, оливками и салатным миксом под цитрусовой заправкой')
so1 = food('Семейный очаг', '499', 'Сытный мясной суп с говядиной, курицей, свининой и овощами. Заботливо согревает и обволакивает')
so2 = food('Суп с чечевицей и овощами', '329', 'Зелёный свет! Суп с чечевицей, брокколи, цветной капустой и грибами ')
so3 = food('Сырный суп в хлебе', '579', 'Ароматный сырный крем-суп с орегано и картофельными чипсами. Подаём в хлебе')
p1 = food('Маргарита 28|40 см', '399|569', 'Фирменный томатный соус, сливочная моцарелла и базилик. Классика, к которой иногда так хочется вернуться')
p2 = food('Пепперони 28|40 см', '535|769', 'Пицца, которая умеет подстроиться под любую ситуацию. Пепперони, моцарелла, фирменный томатный соус и петрушка')
p3 = food('Ветчина и грибы 28|40 см', '699|989', 'Шампиньоны, моцарелла, фирменный томатный соус, орегано и ветчина. Ничего лишнего, только любимое')
d1 = food('Эспрессо 30|60 мл', '139|199', '')
d2 = food('Американо 180|300 мл', '199|329', '')
d3 = food('Латте 250|430 мл', '229|329', '')
c1 = food('Лимонад маракуйя 120|620 мл', '319|749', 'Уже при первом знакомстве маракуйя, цветочный сироп, лимон и содовая без капли стеснения подхватывают вас и кружат словно в вальсе. Глоток, ещё один – и всё вокруг уже заиграло новыми красками')
c2 = food('Ягодный лимонад 280|700 мл', '319|749', 'Сочетание летних ягод малины и черники с добавлением черносмородинового сиропа, вишнёвого и клюквенного сока, газированной воды и сауэр микс')
c3 = food('Тархун 290|820 мл', '299|699', 'Пряный тархун в сочетании с лимонным и яблочным соками и газированной водой ')
a1 = food('Каппитан морган кола', '345', 'Ром Капитан Морган Пряный Золотой, Кока–Кола')
a2 = food('Дюарс хайбол', '355', 'Дюарс Уайт Лэйбл, сауэр микс, ванильный сироп, содовая, лайм')
a3 = food('Джек с колой', '355', 'Джек Дэниел’с Олд №7, Кока-Кола')
@bot.message_handler(commands = ['start'])
def first_part(message):
    main_markup = types.InlineKeyboardMarkup()
    basket = types.InlineKeyboardButton(text = 'Корзина', callback_data = 'basket')
    salad = types.InlineKeyboardButton(text = 'Салаты', callback_data = 'salad')
    soup = types.InlineKeyboardButton(text = 'Суп', callback_data = 'soup')
    pizza = types.InlineKeyboardButton(text = 'Пицца', callback_data = 'pizza')
    drink = types.InlineKeyboardButton(text = 'Напитки', callback_data = 'drink')
    cocktail = types.InlineKeyboardButton(text = 'Коктели', callback_data = 'cocktail')
    alcohol = types.InlineKeyboardButton(text = 'Алькоголь', callback_data = 'alcohol')
    main_markup.add(salad, soup, pizza, drink, cocktail, alcohol, basket)
    bot.send_message(message.from_user.id, 'Выберите вид еды которую хотите закзать', reply_markup = main_markup)
@bot.callback_query_handler(func = lambda call: True)
def second_part(call):
    main_markup = types.InlineKeyboardMarkup()
    back = types.InlineKeyboardButton(text = 'Назад', callback_data = 'back')
    basket = types.InlineKeyboardButton(text = 'Корзина', callback_data = 'basket')
    menu = types.InlineKeyboardButton(text = 'Меню', callback_data = 'menu')
    if call.data == 'salad':
        bsa1 = types.InlineKeyboardButton(text = sa1.name, callback_data = sa1)
        bsa2 = types.InlineKeyboardButton(text = sa2.name, callback_data = sa2)
        bsa3 = types.InlineKeyboardButton(text = sa3.name, callback_data = sa3)
        main_markup.add(bsa1, bsa2, bsa3)
    if call.data == 'soup':
        bso1 = types.InlineKeyboardButton(text = so1.name, callback_data = so1)
        bso2 = types.InlineKeyboardButton(text = so2.name, callback_data = so2)
        bso3 = types.InlineKeyboardButton(text = so3.name, callback_data = so3)
        main_markup.add(bso1, bso2, bso3)
    if call.data == 'pizza':
        bp1 = types.InlineKeyboardButton(text = p1.name, callback_data = p1)
        bp2 = types.InlineKeyboardButton(text = p2.name, callback_data = p2)
        bp3 = types.InlineKeyboardButton(text = p3.name, callback_data = p3)
        main_markup.add(bp1, bp2, bp3)
    if call.data == 'drink':
        bd1 = types.InlineKeyboardButton(text = d1.name, callback_data = d1)
        bd2 = types.InlineKeyboardButton(text = d2.name, callback_data = d2)
        bd3 = types.InlineKeyboardButton(text = d3.name, callback_data = d3)
        main_markup.add(bd1, bd2, bd3)
    if call.data == 'cocktail':
        bc1 = types.InlineKeyboardButton(text = c1.name, callback_data = c1)
        bc2 = types.InlineKeyboardButton(text = c2.name, callback_data = c2)
        bc3 = types.InlineKeyboardButton(text = c3.name, callback_data = c3)
        main_markup.add(bc1, bc2, bc3)
    if call.data == 'alcohol':
        ba1 = types.InlineKeyboardButton(text = a1.name, callback_data = a1)
        ba2 = types.InlineKeyboardButton(text = a2.name, callback_data = a2)
        ba3 = types.InlineKeyboardButton(text = a3.name, callback_data = a3)
        main_markup.add(ba1, ba2, ba3)
    main_markup.add(back, basket, menu)
    bot.send_message(call.message.chat.id, 'Выберите еду которую хотите заказать', reply_markup = main_markup)
@bot.callback_query_handler(func = lambda call: True)
def third_part(call):
        main_markup = types.InlineKeyboardMarkup()
        add = types.InlineKeyboardButton(text = 'Добавить в корзину', callback_data = 'add')
        back = types.InlineKeyboardButton(text = 'Назад', callback_data = 'back')
        basket = types.InlineKeyboardButton(text = 'Корзина', callback_data = 'basket')
        menu = types.InlineKeyboardButton(text = 'Меню', callback_data = 'menu')
        main_markup.add(back, basket, menu, add)
        bot.send_message(call.message.chat.id, f'{call.data.name} {call.data.price}\n{call.data.des}', reply_markup = main_markup)
if __name__ == '__main__':
    bot.polling(non_stop = True, interval = 0)

Офлайн

#2 Март 9, 2022 12:08:36

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1395
Репутация: +  124  -
Профиль   Отправить e-mail  

тг бот на библиотке телебот

вас не смущает, что в callback_data вместо строки объект. Почему вы решили хранить данные еды в классе а не в базе данных?Начинайте делать по одной кнопке, писать код как бы от малого к большему. В большом коде плохо ориентироваться.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version