diff --git a/handlers/admin/panel/keyboard.py b/handlers/admin/panel/keyboard.py index a2072d7a..cbffc558 100644 --- a/handlers/admin/panel/keyboard.py +++ b/handlers/admin/panel/keyboard.py @@ -22,13 +22,9 @@ class AdminPanelCallback(CallbackData, prefix="admin_panel"): async def build_panel_kb(admin_role: str) -> InlineKeyboardMarkup: builder = InlineKeyboardBuilder() - builder.button( - text="πŸ‘€ Поиск ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ", - callback_data=AdminPanelCallback(action="search_user").pack(), - ) - builder.button( - text="πŸ”‘ Поиск ΠΏΠΎ подпискС", - callback_data=AdminPanelCallback(action="search_key").pack(), + builder.row( + InlineKeyboardButton(text="πŸ‘€ Поиск ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ", callback_data=AdminPanelCallback(action="search_user").pack()), + InlineKeyboardButton(text="πŸ”‘ Поиск подписок", callback_data=AdminPanelCallback(action="search_key").pack()), ) if admin_role == "superadmin": @@ -36,6 +32,14 @@ async def build_panel_kb(admin_role: str) -> InlineKeyboardMarkup: text="πŸ–₯️ Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСрвСрами", callback_data=AdminPanelCallback(action="clusters").pack(), ) + builder.button( + text="πŸ’ΈΠ£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Ρ€ΠΈΡ„Π°ΠΌΠΈ", + callback_data=AdminPanelCallback(action="tariffs").pack(), + ) + builder.button( + text="πŸ€– Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΡ‚ΠΎΠΌ", + callback_data=AdminPanelCallback(action="management").pack(), + ) builder.row( InlineKeyboardButton(text="πŸ“’ Рассылка", callback_data=AdminPanelCallback(action="sender").pack()), @@ -44,16 +48,8 @@ async def build_panel_kb(admin_role: str) -> InlineKeyboardMarkup: if admin_role == "superadmin": builder.row( - InlineKeyboardButton(text="πŸ’Έ Π’Π°Ρ€ΠΈΡ„Ρ‹", callback_data=AdminPanelCallback(action="tariffs").pack()), InlineKeyboardButton(text="🎁 ΠŸΠΎΠ΄Π°Ρ€ΠΊΠΈ", callback_data=AdminPanelCallback(action="gifts").pack()), - ) - builder.button( - text="🧩 Мои ΠΌΠΎΠ΄ΡƒΠ»ΠΈ", - callback_data=AdminPanelCallback(action="modules").pack(), - ) - builder.button( - text="πŸ€– Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΡ‚ΠΎΠΌ", - callback_data=AdminPanelCallback(action="management").pack(), + InlineKeyboardButton(text="🧩 Мои ΠΌΠΎΠ΄ΡƒΠ»ΠΈ", callback_data=AdminPanelCallback(action="modules").pack()), ) builder.row( InlineKeyboardButton(text="πŸ“Š Бтатистика", callback_data=AdminPanelCallback(action="stats").pack()), @@ -74,9 +70,9 @@ async def build_panel_kb(admin_role: str) -> InlineKeyboardMarkup: ) if admin_role == "superadmin": - builder.adjust(1, 1, 1, 1, 2, 2, 1, 1, 2, 1) + builder.adjust(2, 1, 1, 1, 2, 2, 2, 1) else: - builder.adjust(1, 1, 1, 2, 1, 1, 1) + builder.adjust(2, 2, 1, 1) return builder.as_markup() diff --git a/handlers/keys/key_connect.py b/handlers/keys/key_connect.py index dfbe5b50..b104a5e8 100644 --- a/handlers/keys/key_connect.py +++ b/handlers/keys/key_connect.py @@ -252,6 +252,7 @@ async def show_qr_code(callback_query: types.CallbackQuery, session: AsyncSessio text="πŸ”² Π’Π°Ρˆ QR-ΠΊΠΎΠ΄ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ", reply_markup=builder.as_markup(), media_path=qr_path, + disable_cache=True, ) os.remove(qr_path) diff --git a/handlers/utils.py b/handlers/utils.py index b2fc60da..063e8f3c 100644 --- a/handlers/utils.py +++ b/handlers/utils.py @@ -224,6 +224,7 @@ async def edit_or_send_message( media_path: str = None, disable_web_page_preview: bool = False, force_text: bool = False, + disable_cache: bool = False, ): if not hasattr(edit_or_send_message, "cache"): from collections import OrderedDict @@ -254,10 +255,12 @@ async def edit_or_send_message( if actual_media_path: media_type = get_media_type(actual_media_path) - async with edit_or_send_message.lock: - cached_id = edit_or_send_message.cache.get(actual_media_path) - if cached_id: - edit_or_send_message.cache.move_to_end(actual_media_path) + cached_id = None + if not disable_cache: + async with edit_or_send_message.lock: + cached_id = edit_or_send_message.cache.get(actual_media_path) + if cached_id: + edit_or_send_message.cache.move_to_end(actual_media_path) if cached_id: try: @@ -307,7 +310,7 @@ async def edit_or_send_message( elif hasattr(msg, 'animation') and msg.animation: file_id = msg.animation.file_id - if file_id: + if file_id and not disable_cache: async with edit_or_send_message.lock: if actual_media_path not in edit_or_send_message.cache: edit_or_send_message.cache[actual_media_path] = file_id