Init commit
This commit is contained in:
4
handlers/callback/__init__.py
Normal file
4
handlers/callback/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
from . import null
|
||||
from . import catalog
|
||||
from . import cart
|
||||
from . import admin
|
2
handlers/callback/admin/__init__.py
Normal file
2
handlers/callback/admin/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import catalog
|
||||
from . import user
|
60
handlers/callback/admin/catalog.py
Normal file
60
handlers/callback/admin/catalog.py
Normal file
@@ -0,0 +1,60 @@
|
||||
import io
|
||||
|
||||
from aiogram import types
|
||||
|
||||
from load import dp, messages
|
||||
from utils.database.market import Catalog
|
||||
from keyboard.inline.admin.catalog import item_list
|
||||
from keyboard.default.main_menu import back_to_main_menu
|
||||
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data.split("|")[0] in ["adm_prev", "adm_next"], is_admin=True)
|
||||
async def next_item_adm(callback: types.CallbackQuery):
|
||||
data = callback.data.split("|")
|
||||
count = int(data[1])
|
||||
items = Catalog.get_catalog()
|
||||
item = items[count]
|
||||
|
||||
await callback.message.edit_media(
|
||||
media=types.InputMediaPhoto(
|
||||
media=io.BytesIO(item["image"]),
|
||||
caption=messages.product_message.format(
|
||||
name=item["name"],
|
||||
description=item["description"],
|
||||
price=item['price']
|
||||
),
|
||||
parse_mode="Markdown",
|
||||
),
|
||||
reply_markup=item_list(count, len(items)-1, int(data[2]))
|
||||
)
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data.split("|")[0] == 'delete_post', is_admin=True)
|
||||
async def delete_post_adm(callback: types.CallbackQuery):
|
||||
data = callback.data.split("|")
|
||||
item_id = Catalog.get_catalog()[int(data[1])]["id"]
|
||||
Catalog.delete_post(item_id)
|
||||
|
||||
items = Catalog.get_catalog()
|
||||
if items:
|
||||
item = items[0]
|
||||
await callback.message.edit_media(
|
||||
media=types.InputMediaPhoto(
|
||||
media=io.BytesIO(item["image"]),
|
||||
caption=messages.product_message.format(
|
||||
name=item["name"],
|
||||
description=item["description"],
|
||||
price=item['price']
|
||||
),
|
||||
parse_mode="Markdown",
|
||||
),
|
||||
reply_markup=item_list(items=len(items)-1)
|
||||
)
|
||||
else:
|
||||
await callback.message.delete()
|
||||
await dp.bot.send_message(
|
||||
callback.message.chat.id,
|
||||
messages.catalog + " пуст!",
|
||||
reply_markup=back_to_main_menu
|
||||
)
|
||||
await callback.answer("Товар удалён!")
|
||||
await callback.answer()
|
35
handlers/callback/admin/user.py
Normal file
35
handlers/callback/admin/user.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from subprocess import call
|
||||
from aiogram import types
|
||||
|
||||
from load import dp, messages
|
||||
from keyboard.inline.admin.user import item_list
|
||||
from utils.database.base import get_full_admin, del_admin
|
||||
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data.split("|")[0] in ["admin_prev", "admin_next"], is_admin=True)
|
||||
async def next_item_adm(callback: types.CallbackQuery):
|
||||
data = callback.data.split("|")
|
||||
count = int(data[1])
|
||||
items = get_full_admin()
|
||||
admin = items[count]
|
||||
|
||||
await callback.message.edit_text(
|
||||
messages.admin_user.format(**admin),
|
||||
reply_markup=item_list(count, len(items)-1, int(data[2])),
|
||||
parse_mode="Markdown"
|
||||
)
|
||||
await callback.answer()
|
||||
|
||||
@dp.callback_query_handler(lambda x: x.data.split("|")[0] == "delete_admin")
|
||||
async def delete_admin(callback: types.CallbackQuery):
|
||||
data = callback.data.split("|")
|
||||
count = int(data[1])
|
||||
items = get_full_admin()
|
||||
admin = items[count]
|
||||
if admin["user_id"] == callback.from_user.id:
|
||||
await dp.bot.send_message(callback.message.chat.id, "Вы не можете удалить сами себя")
|
||||
await callback.answer()
|
||||
return
|
||||
del_admin(admin["user_id"])
|
||||
await dp.bot.send_message(callback.message.chat.id, f"Админ {admin['first_name']} удалён!")
|
||||
await callback.answer()
|
74
handlers/callback/cart.py
Normal file
74
handlers/callback/cart.py
Normal file
@@ -0,0 +1,74 @@
|
||||
import io
|
||||
|
||||
from aiogram import types
|
||||
|
||||
from load import dp, messages
|
||||
from utils.database.cart import add_to_cart, get_user_cart, del_from_cart
|
||||
from utils.database.market import Catalog
|
||||
from keyboard.inline.cart import cart_list
|
||||
from keyboard.default.main_menu import back_to_main_menu
|
||||
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data.split("|")[0]=="add_to_cart")
|
||||
async def add_cart(callback: types.CallbackQuery):
|
||||
item_id = callback.data.split("|")[1]
|
||||
add_to_cart(callback.from_user.id, item_id)
|
||||
await callback.answer("Товар добавлен!")
|
||||
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data.split("|")[0]=="del_from_cart")
|
||||
async def del_cart(callback: types.CallbackQuery):
|
||||
c = callback.data.split("|")[1]
|
||||
item_id = get_user_cart(callback.from_user.id)[int(c)][0]
|
||||
|
||||
del_from_cart(callback.from_user.id, item_id)
|
||||
|
||||
items = get_user_cart(callback.from_user.id)
|
||||
|
||||
if items:
|
||||
index, count =items[0]
|
||||
item = Catalog.get_catalog(index)
|
||||
await callback.message.edit_media(
|
||||
media=types.InputMediaPhoto(
|
||||
media=io.BytesIO(item["image"]),
|
||||
caption=messages.cart_message.format(
|
||||
name=item["name"],
|
||||
description=item["description"],
|
||||
count=count,
|
||||
price=item['price']*count
|
||||
),
|
||||
parse_mode="Markdown",
|
||||
),
|
||||
reply_markup=cart_list(items=len(items)-1)
|
||||
)
|
||||
else:
|
||||
await callback.message.delete()
|
||||
await dp.bot.send_message(
|
||||
callback.message.chat.id,
|
||||
messages.cart + " пустая!",
|
||||
reply_markup=back_to_main_menu
|
||||
)
|
||||
await callback.answer("Товар удалён!")
|
||||
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data.split("|")[0] in ["cart_prev", "cart_next"])
|
||||
async def next_item(callback: types.CallbackQuery):
|
||||
data = callback.data.split("|")
|
||||
c = int(data[1])
|
||||
items = get_user_cart(callback.from_user.id)
|
||||
index, count = items[c]
|
||||
item = Catalog.get_catalog(index)
|
||||
|
||||
await callback.message.edit_media(
|
||||
media=types.InputMediaPhoto(
|
||||
media=io.BytesIO(item["image"]),
|
||||
caption=messages.cart_message.format(
|
||||
name=item["name"],
|
||||
description=item["description"],
|
||||
count=count,
|
||||
price=item['price']*count
|
||||
),
|
||||
parse_mode="Markdown",
|
||||
),
|
||||
reply_markup=cart_list(c, len(items)-1)
|
||||
)
|
29
handlers/callback/catalog.py
Normal file
29
handlers/callback/catalog.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import io
|
||||
|
||||
from aiogram import types
|
||||
|
||||
from load import dp, messages
|
||||
from utils.database.market import Catalog
|
||||
from keyboard.inline.catalog import item_list
|
||||
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data.split("|")[0] in ["prev", "next"])
|
||||
async def next_item(callback: types.CallbackQuery):
|
||||
data = callback.data.split("|")
|
||||
count = int(data[1])
|
||||
items = Catalog.get_catalog()
|
||||
item = items[count]
|
||||
|
||||
await callback.message.edit_media(
|
||||
media=types.InputMediaPhoto(
|
||||
media=io.BytesIO(item["image"]),
|
||||
caption=messages.product_message.format(
|
||||
name=item["name"],
|
||||
description=item["description"],
|
||||
price=item['price']
|
||||
),
|
||||
parse_mode="Markdown",
|
||||
),
|
||||
reply_markup=item_list(count, len(items)-1, int(data[2]))
|
||||
)
|
||||
|
7
handlers/callback/null.py
Normal file
7
handlers/callback/null.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from aiogram.types import CallbackQuery
|
||||
|
||||
from load import dp
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == "null")
|
||||
async def null(callback: CallbackQuery):
|
||||
await callback.answer()
|
Reference in New Issue
Block a user