Init commit

This commit is contained in:
2022-06-04 22:02:51 +03:00
commit 64c6aeb002
59 changed files with 1399 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
from . import panel
from . import add_post
from . import delete_post
from . import user_control

View File

@@ -0,0 +1,85 @@
import io
from aiogram import types
from aiogram.types import ContentType
from aiogram.dispatcher import FSMContext
from load import bot, dp, messages
from utils.helper import download_file
from keyboard.default.admin.main_menu import base_menu, continue_btn, all_right
from keyboard.default.main_menu import back_to_main_menu
from state.post import Post
from utils.database.market import add_item
@dp.message_handler(lambda x: x.text == messages.add_post, is_admin=True)
async def cmd_add_post(message: types.Message):
await bot.send_message(message.chat.id, "Укажите имя товара", reply_markup=base_menu())
await Post.name.set()
@dp.message_handler(is_admin=True, state=Post.name)
async def admin_form_name(message: types.Message, state: FSMContext):
await state.update_data(name=message.text)
await bot.send_message(message.chat.id, "Укажите описание товара", reply_markup=base_menu(skip=True))
await Post.description.set()
@dp.message_handler(is_admin=True, state=Post.description)
async def admin_form_desk(message: types.Message, state: FSMContext):
if message.text == messages.skip_message:
await state.update_data(description="")
else:
await state.update_data(description=message.text)
await bot.send_message(message.chat.id, "Укажите цену", reply_markup=base_menu())
await Post.price.set()
@dp.message_handler(is_admin=True, state=Post.price)
async def admin_form_price(message: types.message, state: FSMContext):
if not message.text.replace('.','').replace(',', '').isdigit():
await Post.price.set()
await state.update_data(price=float(message.text.replace(",", ".")))
await bot.send_message(message.chat.id, "Отправьте фото товара")
await Post.image.set()
@dp.message_handler(is_admin=True, state=Post.image, content_types=[ContentType.PHOTO])
async def admin_form_image(message:types.Message, state: FSMContext):
file_id = message.photo[-1].file_id
file_info = await bot.get_file(file_id)
photo = await download_file(file_info.file_path)
await state.update_data(image=photo.read())
await bot.send_message(
message.chat.id,
"Все данные для поста были заполнены",
reply_markup=continue_btn
)
await Post.finish.set()
@dp.message_handler(lambda x:x.text == messages.continue_, state=Post.finish, is_admin=True)
async def finish(message: types.Message, state: FSMContext):
data = await state.get_data()
await bot.send_photo(
message.chat.id,
caption=messages.product_message.format(
name=data["name"],
description=data["description"],
price=data["price"]
),
photo=data["image"],
reply_markup=all_right,
parse_mode='Markdown'
)
@dp.message_handler(lambda x: x.text == messages.all_right_message, is_admin=True, state=Post.finish)
async def write_on_db(message: types.Message, state: FSMContext):
data = await state.get_data()
add_item(**data)
await state.finish()
await bot.send_message(
message.chat.id,
"Товар был добавлен",
reply_markup=back_to_main_menu
)

View File

@@ -0,0 +1,27 @@
from aiogram import types
from load import bot, dp, messages
from utils.database.market import Catalog
from keyboard.default.main_menu import back_to_main_menu
from keyboard.inline.admin.catalog import item_list
@dp.message_handler(lambda x: x.text == messages.delete_post, is_admin=True)
async def delete_post(message: types.Message):
items = Catalog.get_catalog()
if not items:
await bot.send_message(message.chat.id, "Каталог пуст:(")
return
item = items[0]
await bot.send_message(message.chat.id, messages.catalog, reply_markup=back_to_main_menu)
await bot.send_photo(
chat_id=message.chat.id,
photo=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)
)

10
handlers/admin/panel.py Normal file
View File

@@ -0,0 +1,10 @@
from aiogram import types
from load import dp, bot, messages
from keyboard.default.admin.main_menu import main_menu
@dp.message_handler(lambda x: x.text == messages.admin_panel, is_admin=True)
async def cmd_menu(message: types.Message):
await bot.send_message(message.chat.id, "Admin panel", reply_markup=main_menu())

View File

@@ -0,0 +1,6 @@
from utils.json import permission
if permission.can_admin_add_admins:
from . import adding
if permission.can_admin_del_admins:
from . import delete

View File

@@ -0,0 +1,37 @@
from aiogram import types
from load import dp, bot, messages
from state.state import AddUser
from utils.database.user import Register, User
from keyboard.default.admin.main_menu import base_menu
from keyboard.default.main_menu import back_to_main_menu
@dp.message_handler(lambda x: x.text == messages.add_admin, is_admin=True)
async def add_admin(message: types.Message):
await bot.send_message(
message.chat.id,
("Отправьте user_id пользователя\n"
"Его можно узнать зайдя в информацию о пользователе"),
reply_markup=base_menu()
)
await AddUser.user_id.set()
@dp.message_handler(state=AddUser.user_id)
async def add_admin1(message: types.Message, state):
await state.finish()
user_id = message.text
if not user_id.isdigit() or "-100" in user_id:
await bot.send_message(message.chat.id, "Данные не правильные!", reply_markup=back_to_main_menu)
return
user_id = int(user_id)
user = User.get_user(user_id)
if not user:
await bot.send_message(message.chat.id, "Пользователь не существует!", reply_markup=back_to_main_menu)
return
Register.register_admin(user)
await bot.send_message(message.chat.id, "Администратор добавлен!", reply_markup=back_to_main_menu)

View File

@@ -0,0 +1,17 @@
from aiogram import types
from load import dp, bot, messages
from keyboard.inline.admin.user import item_list
from utils.database.base import get_full_admin
@dp.message_handler(lambda x: x.text==messages.del_admin, is_admin=True)
async def del_admin(message: types.Message):
admins = get_full_admin()
admin = admins[0]
result = messages.admin_user.format(**admin)
await bot.send_message(
message.chat.id,
result,
parse_mode="Markdown",
reply_markup=item_list(items=len(admins)-1)
)