old_01
This commit is contained in:
58
doners/Shop-bot/handlers/user/catalog.py
Normal file
58
doners/Shop-bot/handlers/user/catalog.py
Normal file
@@ -0,0 +1,58 @@
|
||||
|
||||
import logging
|
||||
from aiogram.types import Message, CallbackQuery
|
||||
from keyboards.inline.categories import categories_markup, category_cb
|
||||
from keyboards.inline.products_from_catalog import product_markup, product_cb
|
||||
from aiogram.utils.callback_data import CallbackData
|
||||
from aiogram.types.chat import ChatActions
|
||||
from loader import dp, db, bot
|
||||
from .menu import catalog
|
||||
from filters import IsUser
|
||||
|
||||
|
||||
@dp.message_handler(IsUser(), text=catalog)
|
||||
async def process_catalog(message: Message):
|
||||
await message.answer('Выберите раздел, чтобы вывести список товаров:',
|
||||
reply_markup=categories_markup())
|
||||
|
||||
|
||||
@dp.callback_query_handler(IsUser(), category_cb.filter(action='view'))
|
||||
async def category_callback_handler(query: CallbackQuery, callback_data: dict):
|
||||
|
||||
products = db.fetchall('''SELECT * FROM products product
|
||||
WHERE product.tag = (SELECT title FROM categories WHERE idx=?)
|
||||
AND product.idx NOT IN (SELECT idx FROM cart WHERE cid = ?)''',
|
||||
(callback_data['id'], query.message.chat.id))
|
||||
|
||||
await query.answer('Все доступные товары.')
|
||||
await show_products(query.message, products)
|
||||
|
||||
|
||||
@dp.callback_query_handler(IsUser(), product_cb.filter(action='add'))
|
||||
async def add_product_callback_handler(query: CallbackQuery, callback_data: dict):
|
||||
|
||||
db.query('INSERT INTO cart VALUES (?, ?, 1)',
|
||||
(query.message.chat.id, callback_data['id']))
|
||||
|
||||
await query.answer('Товар добавлен в корзину!')
|
||||
await query.message.delete()
|
||||
|
||||
|
||||
async def show_products(m, products):
|
||||
|
||||
if len(products) == 0:
|
||||
|
||||
await m.answer('Здесь ничего нет 😢')
|
||||
|
||||
else:
|
||||
|
||||
await bot.send_chat_action(m.chat.id, ChatActions.TYPING)
|
||||
|
||||
for idx, title, body, image, price, _ in products:
|
||||
|
||||
markup = product_markup(idx, price)
|
||||
text = f'<b>{title}</b>\n\n{body}'
|
||||
|
||||
await m.answer_photo(photo=image,
|
||||
caption=text,
|
||||
reply_markup=markup)
|
||||
Reference in New Issue
Block a user