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')