first commit
This commit is contained in:
97
bot.0.1/handlers/admin.py
Executable file
97
bot.0.1/handlers/admin.py
Executable file
@@ -0,0 +1,97 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user