From 8a41de9ddb993c093e693c9b46aaf0a201b0c859 Mon Sep 17 00:00:00 2001 From: Admin Date: Tue, 3 Mar 2026 18:16:35 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BD=D0=BE=D0=BF?= =?UTF-8?q?=D0=BA=D0=B8=20'=F0=9F=9A=AB=20=D0=9E=D1=82=D0=BE=D0=B7=D0=B2?= =?UTF-8?q?=D0=B0=D1=82=D1=8C=20=D0=B2=D0=B5=D1=80=D0=B8=D1=84.'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✅ Теперь кнопка показывает реальный список: - Пользователи с отозванной верификацией - Показывает ID, квартиру, когда отозвано - Сколько дней назад 📝 Было: - Показывала подсказку по команде /unverify 📝 Стало: - Показывает реальный список пользователей - Сразу видно у кого отозвана верификация - Удобно для админа! 💡 Все кнопки теперь работают без подсказок! - Для подсказок есть кнопка '❓ Помощь' - Остальные кнопки показывают результат сразу! Co-authored-by: Qwen-Coder --- handlers/admin.py | 47 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/handlers/admin.py b/handlers/admin.py index 4d2e343..88b47a9 100644 --- a/handlers/admin.py +++ b/handlers/admin.py @@ -899,18 +899,41 @@ async def cb_admin_help(message: CallbackQuery): @router.callback_query(F.data == 'admin_unverify') @admin_only -async def cb_admin_unverify(message: CallbackQuery): - """Кнопка Отозвать верификацию""" - text = ( - '🚫 Отозвать верификацию\n\n' - 'Использование:\n' - '/unverify <user_id> [причина]\n\n' - 'Пример:\n' - '/unverify 123456789 Подозрение на шпиона\n\n' - '💡 User ID можно узнать в /users' - ) - await message.message.answer(text, parse_mode='HTML') - await message.answer() +async def cb_admin_unverify(callback: CallbackQuery): + """Кнопка Отозвать верификацию — показывает реальный список""" + await callback.answer() + + async with AsyncSessionLocal() as session: + # Показываем пользователей у которых verified = False и была верификация + stmt = ( + select(User) + .where(User.verified == False) + .where(User.verification_date != None) + .order_by(User.verification_date.desc()) + .limit(20) + ) + result = await session.execute(stmt) + users = list(result.scalars().all()) + + if not users: + await callback.message.answer('✅ Нет пользователей с отозванной верификацией') + return + + text = '🚫 ОТОЗВАНА ВЕРИФИКАЦИЯ\n\n' + text += f'Всего: {len(users)}\n\n' + + for user in users: + name = user.full_name or f'user{user.user_id}' + apt = f' (кв. {user.apartment})' if user.apartment else '' + days_ago = (datetime.utcnow() - user.verification_date).days if user.verification_date else '?' + text += f'• {name}{apt}\n' + text += f' └─ ID: {user.user_id} | отозвано {days_ago} дн. назад\n' + + text += '\n💡 Что делать:\n' + text += '• Верифицировать повторно через веб-админку\n' + text += '• Или оставить как есть (пользователь должен пройти верификацию заново)' + + await callback.message.answer(text, parse_mode='HTML') @router.callback_query(F.data == 'admin_unverified_list')