This commit is contained in:
2024-06-17 10:44:18 +03:00
parent c2255c2166
commit 37b152a431
14 changed files with 403 additions and 0 deletions

94
bot-market/app/admin.py Normal file
View File

@@ -0,0 +1,94 @@
from aiogram import Router, F
from aiogram.types import Message, CallbackQuery
from aiogram.filters import CommandStart, Command, Filter
from aiogram.fsm.context import FSMContext
from aiogram.fsm.state import State, StatesGroup
import app.keyboards as kb
from app.database.requests import get_users, set_item
admin = Router()
class Newsletter(StatesGroup):
message = State()
class AddItem(StatesGroup):
name = State()
category = State()
description = State()
photo = State()
price = State()
class AdminProtect(Filter):
async def __call__(self, message: Message):
return message.from_user.id in [1477217831]
@admin.message(AdminProtect(), Command('apanel'))
async def apanel(message: Message):
await message.answer('Возможные команды: /newsletter\n/add_item')
@admin.message(AdminProtect(), Command('newsletter'))
async def newsletter(message: Message, state: FSMContext):
await state.set_state(Newsletter.message)
await message.answer('Отправьте сообщение, которое вы хотите разослать всем пользователям')
@admin.message(AdminProtect(), Newsletter.message)
async def newsletter_message(message: Message, state: FSMContext):
await message.answer('Подождите... идёт рассылка.')
for user in await get_users():
try:
await message.send_copy(chat_id=user.tg_id)
except:
pass
await message.answer('Рассылка успешно завершена.')
await state.clear()
@admin.message(AdminProtect(), Command('add_item'))
async def add_item(message: Message, state: FSMContext):
await state.set_state(AddItem.name)
await message.answer('Введите название товара')
@admin.message(AdminProtect(), AddItem.name)
async def add_item_name(message: Message, state: FSMContext):
await state.update_data(name=message.text)
await state.set_state(AddItem.category)
await message.answer('Выберите категорию товара', reply_markup=await kb.categories())
@admin.callback_query(AdminProtect(), AddItem.category)
async def add_item_category(callback: CallbackQuery, state: FSMContext):
await state.update_data(category=callback.data.split('_')[1])
await state.set_state(AddItem.description)
await callback.answer('')
await callback.message.answer('Введите описание товара')
@admin.message(AdminProtect(), AddItem.description)
async def add_item_description(message: Message, state: FSMContext):
await state.update_data(description=message.text)
await state.set_state(AddItem.photo)
await message.answer('Отправьте фото товара')
@admin.message(AdminProtect(), AddItem.photo, F.photo)
async def add_item_photo(message: Message, state: FSMContext):
await state.update_data(photo=message.photo[-1].file_id)
await state.set_state(AddItem.price)
await message.answer('Введите цену товара')
@admin.message(AdminProtect(), AddItem.price)
async def add_item_price(message: Message, state: FSMContext):
await state.update_data(price=message.text)
data = await state.get_data()
await set_item(data)
await message.answer('Товар успешно добавлен')
await state.clear()