from __future__ import annotations from pyrogram import Client, filters from pyrogram.types import CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup, Message from utils import filters as myfilters from utils.client import MyClient from utils.db import Depends, User, get_user, get_user_query, inject from utils.i18n import i18n, tr as _ from utils.messages import message_handler from utils.settings import upset_setting # from utils.db import Depends, User, get_user, inject async def send_main_menu(client: MyClient, update: Message | CallbackQuery, user: User) -> None: maintenance_mode = await upset_setting("MAINTENANCE_MODE") keyboard = InlineKeyboardMarkup( [ [ InlineKeyboardButton( _("cp.tasks_number", locale=user.language), "cp_number-of-tasks" ) ], [InlineKeyboardButton(_("cp.manage_users", locale=user.language), "cp_manage-users")], [ InlineKeyboardButton( _("cp.maintenance_mode", locale=user.language) + f" {'✅' if maintenance_mode else '❌'}", "cp_maintenance_mode", ) ], ] ) func = update.edit_message_text if isinstance(update, CallbackQuery) else update.reply_text await message_handler( func, text=_("cp.hello", first_name=update.from_user.first_name, locale=user.language), reply_markup=keyboard, ) @Client.on_message(filters.command(["cp"]) & myfilters.is_admin) @inject async def main_menu(client: MyClient, msg: Message, user: User = Depends(get_user)) -> None: await send_main_menu(client, msg, user) @Client.on_callback_query(filters.regex("cp_main-menu") & myfilters.is_admin) @inject async def main_menu_query( client: MyClient, query: CallbackQuery, user: User = Depends(get_user_query) ) -> None: await send_main_menu(client, query, user) @Client.on_message(filters.command(["locales"]) & myfilters.is_admin) @inject async def refresh_locales(client: MyClient, msg: Message, user: User = Depends(get_user)) -> None: i18n._load_all_locales() await message_handler(msg.reply, _("cp.locales_refreshed", locale=user.language))