from aiogram import F, Router from aiogram.types import Message, CallbackQuery from aiogram.filters import Command, Filter, CommandObject from aiogram_dialog import DialogManager, StartMode from config import ADMIN_ID from database.repositories.utils import UtilsRepository import bot.keyboards.inline as inline_kb from bot.states.states import Knowledge class IsAdmin(Filter): async def __call__(self, event: Message | CallbackQuery): return event.from_user.id == ADMIN_ID router = Router() @router.message(Command('token_price'), IsAdmin()) async def token_price(message: Message, command: CommandObject, utils_repo: UtilsRepository, i18n): if command.args: try: price = float(command.args) await utils_repo.update_token_price(price) return await message.answer(text=i18n.get('token_price_updated_text')) except Exception as e: await message.answer(text=i18n.get('token_price_error_text')) return price_token = await utils_repo.get_token() if price_token: return await message.answer(text=f'${price_token.price_usd}', reply_markup=inline_kb.close_text(i18n.get('close_kb'))) return await message.answer(text=i18n.get('not_token_price_error_text')) @router.message(Command('knowledge'), IsAdmin()) async def cmd_knowledge(message: Message, utils_repo: UtilsRepository, i18n, dialog_manager: DialogManager): await dialog_manager.start(state=Knowledge.main, mode=StartMode.RESET_STACK)