From dc8ae8b15284af87e6c41b5891112f772519d013 Mon Sep 17 00:00:00 2001 From: Admin Date: Wed, 11 Mar 2026 18:47:23 +0000 Subject: [PATCH] =?UTF-8?q?v1.23=20=D0=92=D0=B5=D1=80=D0=B8=D1=84=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BD=D0=BE=D0=B2=D1=8B=D1=85?= =?UTF-8?q?=20+=20=D0=B1=D0=BB=D0=B0=D0=B3=D0=BE=D0=B4=D0=B0=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✅ НОВЫЕ ПОЛЬЗОВАТЕЛИ: • /start - добавляет в базу и приветствует • Может сразу отправить номер квартиры • Стимул к верификации ✅ БЛАГОДАРНОСТИ: • Показывает ВСЕХ верифицированных (не топ-100) • Пагинация: 20 на странице • Совет: /thank @username для поиска • Работает с 500+ пользователями 📁 ФАЙЛЫ: • handlers/users.py: /start добавляет, thanks pagination Co-authored-by: Qwen-Coder --- handlers/users.py | 65 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/handlers/users.py b/handlers/users.py index cd6137e..92844e7 100644 --- a/handlers/users.py +++ b/handlers/users.py @@ -38,8 +38,46 @@ async def cmd_start(message: Message): user = result.scalar_one_or_none() if not user: - # Пользователя нет в базе - ИГНОР! - logger.info(f'Пользователь {user_id} не в базе - игнорируем /start') + # НОВЫЙ пользователь - добавляем в базу и приветствуем! + user = User( + user_id=user_id, + username=message.from_user.username, + first_name=message.from_user.first_name, + last_name=message.from_user.last_name, + ) + session.add(user) + await session.commit() + + logger.info(f'Новый пользователь {user_id} добавлен в базу') + + # Приветственное сообщение + header = '🔴 ДОБРО ПОЖАЛОВАТЬ' + + welcome_text = f'''{header} + +👋 Привет, {message.from_user.first_name}! + +{get_level_badge("unverified")} + +Я — домовой бот нашего дома. + +⚠️ ВАЖНО: +Для полного доступа пройдите верификацию! + +📝 Как пройти верификацию: + +1️⃣ Отправьте номер квартиры +Примеры: 45, 12А, 100-1 + +2️⃣ (опционально) Телефон +Пример: +79991234567 + +3️⃣ Дождитесь подтверждения +Админ проверит и подтвердит. + +После верификации откроются все функции! 🎉''' + + await message.answer(welcome_text, parse_mode='HTML', reply_markup=get_unverified_menu()) return # Пользователь в базе - обновляем имя @@ -702,26 +740,31 @@ async def cb_thank_user_menu(callback: CallbackQuery): await callback.answer() async with AsyncSessionLocal() as session: - # Показываем активных пользователей (по количеству сообщений) - stmt = select(User).order_by(desc(User.message_count)).limit(100) + # Показываем ВСЕХ верифицированных пользователей + stmt = select(User).where(User.verified == True).order_by(desc(User.message_count)) result = await session.execute(stmt) users = list(result.scalars().all()) - + if not users: - await callback.message.answer('📭 Пользователей нет') + await callback.message.answer('📭 Нет верифицированных пользователей') return - + # Сохраняем список для сессии _thank_pages[callback.from_user.id] = { 'users': users, 'page': 0 } + total_pages = (len(users) + 19) // 20 + await callback.message.answer( - '🙏 Поблагодарить пользователя\n\n' - 'Выберите пользователя которому хотите сказать спасибо:\n' - '(+10 к рейтингу)', - reply_markup=get_thank_user_keyboard(users, page=0), + f'🙏 Поблагодарить пользователя\n\n' + f'Всего верифицированных: {len(users)}\n' + f'Страница 1 из {total_pages}\n\n' + f'Выберите пользователя:\n' + f'(+10 к рейтингу)\n\n' + f'💡 Совет: Используйте /thank @username для быстрого поиска!', + reply_markup=get_thank_user_keyboard(users, page=0, page_size=20), parse_mode='HTML' )