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)