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