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(