diff --git a/handlers/admin/admin_users.py b/handlers/admin/admin_users.py index a0ffb8a8..ad25db21 100644 --- a/handlers/admin/admin_users.py +++ b/handlers/admin/admin_users.py @@ -2,7 +2,7 @@ import asyncio from datetime import datetime from typing import Any -from aiogram import Bot, F, Router, types +from aiogram import F, Router, types from aiogram.fsm.context import FSMContext from aiogram.fsm.state import State, StatesGroup from aiogram.types import CallbackQuery @@ -113,33 +113,25 @@ async def handle_user_data_input( @router.message( - UserEditorState.waiting_for_message_text, + UserEditorState.waiting_for_key_name, IsAdminFilter() ) -async def handle_message_text_input( +async def handle_key_name_input( message: types.Message, state: FSMContext, - bot: Bot + session: Any ): - data = await state.get_data() - tg_id = data.get("tg_id") + key_name = sanitize_key_name(message.text) + key_details = await get_key_details(key_name, session) - try: - await bot.send_message( - chat_id=tg_id, - text=message.text - ) - await message.answer( - text="✅ Сообщение успешно отправлено.", - reply_markup=build_editor_kb(tg_id) - ) - except Exception as e: - await message.answer( - text=f"❌ Не удалось отправить сообщение: {e}", - reply_markup=build_editor_kb(tg_id) + if not key_details: + await message.edit_text( + text="🚫 Пользователь с указанным именем ключа не найден.", + reply_markup=build_admin_back_kb() ) + return - await state.clear() + await process_user_search(message, state, session, key_details["tg_id"]) @router.callback_query( @@ -162,6 +154,35 @@ async def handle_send_message( await state.set_state(UserEditorState.waiting_for_message_text) +@router.message( + UserEditorState.waiting_for_message_text, + IsAdminFilter() +) +async def handle_message_text_input( + message: types.Message, + state: FSMContext +): + data = await state.get_data() + tg_id = data.get("tg_id") + + try: + await message.bot.send_message( + chat_id=tg_id, + text=message.text + ) + await message.answer( + text="✅ Сообщение успешно отправлено.", + reply_markup=build_editor_kb(tg_id) + ) + except Exception as e: + await message.answer( + text=f"❌ Не удалось отправить сообщение: {e}", + reply_markup=build_editor_kb(tg_id) + ) + + await state.clear() + + @router.callback_query( AdminUserEditorCallback.filter(F.action == "users_trial_restore"), IsAdminFilter(), @@ -262,40 +283,6 @@ async def process_key_edit( ) -@router.message( - UserEditorState.waiting_for_key_name, - IsAdminFilter() -) -async def handle_key_name_input( - message: types.Message, - state: FSMContext, - session: Any -): - key_name = sanitize_key_name(message.text) - key_details = await get_key_details(key_name, session) - - if not key_details: - await message.edit_text( - text="🚫 Пользователь с указанным именем ключа не найден.", - reply_markup=build_admin_back_kb() - ) - await state.clear() - return - - text = ( - f"🔑 Ключ: {key_details['key']}\n" - f"⏰ Дата истечения: {key_details['expiry_date']}\n" - f"💰 Баланс пользователя: {key_details['balance']}\n" - f"🌐 Сервер: {key_details['server_name']}" - ) - - await message.edit_text( - text=text, - reply_markup=build_key_edit_kb(key_details, key_name) - ) - await state.clear() - - @router.callback_query( AdminUserEditorCallback.filter(F.action == "users_change_expiry"), IsAdminFilter() @@ -538,6 +525,8 @@ async def process_user_search( tg_id: int, edit: bool = False ) -> None: + await state.clear() + username = await session.fetchval( "SELECT username FROM users WHERE tg_id = $1", tg_id ) @@ -577,8 +566,6 @@ async def process_user_search( reply_markup=build_user_edit_kb(tg_id, key_records) ) - await state.clear() - async def get_key_details(email, session): record = await session.fetchrow( diff --git a/keyboards/admin/users_kb.py b/keyboards/admin/users_kb.py index 0bd6cf86..22c080e1 100644 --- a/keyboards/admin/users_kb.py +++ b/keyboards/admin/users_kb.py @@ -71,13 +71,6 @@ def build_user_delete_kb(tg_id: int): def build_key_edit_kb(key_details: dict, email: str) -> InlineKeyboardMarkup: builder = InlineKeyboardBuilder() - builder.button( - text="ℹ️ Получить информацию о юзере", - callback_data=AdminUserEditorCallback( - action="users_info", - tg_id=key_details["tg_id"] - ).pack() - ) builder.button( text="⏳ Изменить время истечения", callback_data=AdminUserEditorCallback(