Files
Tg-bot/bot.0.1/handlers/admin.py
2024-10-29 16:09:13 +03:00

98 lines
3.6 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher.filters import Text
from aiogram import types, Dispatcher
from create_bot import bot
from data_base import sqlite_db
from keybords import button_case_admin
ID = None
class FSMAdmin(StatesGroup):
photo = State()
name = State()
description = State()
price = State()
# Получаем ID текущего модератора
async def make_changes_command(message: types.Message):
global ID
ID = message.from_user.id
await bot.send_message(message.from_user.id, f"Что нужно хозяин {message.from_user.first_name} ???", reply_markup=button_case_admin)
await message.delete()
# - Начало диалога загрузки нового пункта меню
async def cm_start(message: types.Message):
if message.from_user.id == ID:
await FSMAdmin.photo.set()
await message.reply("Загрузи фото")
# Выход из состояний
async def cancel_handler(message: types.Message, state: FSMContext):
if message.from_user.id == ID:
current_state = await state.get_state()
if current_state is None:
return
await state.finish()
await message.reply("ОК")
# - Ловим первый ответ
async def load_photo(message: types.Message, state: FSMContext):
if message.from_user.id == ID:
async with state.proxy() as data:
data["photo"] = message.photo[0].file_id
await FSMAdmin.next()
await message.answer("Введи название")
# - Ловим Второй ответ
async def load_name(message: types.Message, state: FSMContext):
if message.from_user.id == ID:
async with state.proxy() as data:
data["name"] = message.text
await FSMAdmin.next()
await message.answer("Введити описание")
# - Ловим третий ответ
async def load_description(message: types.Message, state: FSMContext):
if message.from_user.id == ID:
async with state.proxy() as data:
data["description"] = message.text
await FSMAdmin.next()
await message.answer("Укажи цену")
# - Ловим последний ответ
async def load_price(message: types.Message, state: FSMContext):
if message.from_user.id == ID:
state.proxy()
try:
float(message.text)
except:
await FSMAdmin.price.set()
await message.reply("Ценa указана не верно")
await message.answer("Укажи цену ещё раз")
async with state.proxy() as data:
data["price"] = float(message.text)
await sqlite_db.sql_add_command(state)
# await message.answer(str(data))
await state.finish()
def register_handlers_client(dp: Dispatcher):
dp.register_message_handler(cm_start, commands=["Загрузить"], state=None)
dp.register_message_handler(cancel_handler, commands=["отмена"], state="*")
dp.register_message_handler(cancel_handler, Text(equals="отмена", ignore_case=True), state="*")
dp.register_message_handler(load_photo, content_types=["photo"], state=FSMAdmin.photo)
dp.register_message_handler(load_name, state=FSMAdmin.name)
dp.register_message_handler(load_description, state=FSMAdmin.description)
dp.register_message_handler(load_price, state=FSMAdmin.price)
dp.register_message_handler(make_changes_command, commands=["moderator"], is_chat_admin=True)