Fix registration button handling and add debug logging
Some checks failed
continuous-integration/drone/pr Build is failing
Some checks failed
continuous-integration/drone/pr Build is failing
- Improve btn_registration handler to directly set state instead of creating fake callback
- Add /register command handler for registration
- Add text-based registration triggers ('регистрация', 'регистр', 'register')
- Add debug logging to handle_start to track registration status
- Ensure registration button is shown correctly for unregistered users
This commit is contained in:
41
main.py
41
main.py
@@ -134,18 +134,41 @@ async def btn_chat(message: Message, state: FSMContext):
|
||||
@router.message(F.text == "📝 Регистрация")
|
||||
async def btn_registration(message: Message, state: FSMContext):
|
||||
"""Обработчик кнопки 'Регистрация'"""
|
||||
from aiogram.types import CallbackQuery
|
||||
from src.handlers.registration_handlers import RegistrationStates
|
||||
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
|
||||
|
||||
fake_callback = CallbackQuery(
|
||||
id="fake",
|
||||
from_user=message.from_user,
|
||||
chat_instance="0",
|
||||
data="start_registration",
|
||||
message=message
|
||||
logger.info(f"User {message.from_user.id} pressed Registration button")
|
||||
|
||||
text = (
|
||||
"📝 Регистрация в системе\n\n"
|
||||
"Для участия в розыгрышах необходимо зарегистрироваться.\n\n"
|
||||
"Шаг 1 из 3: Придумайте никнейм\n\n"
|
||||
"🎭 Введите ваш никнейм для чата:\n"
|
||||
"• От 2 до 20 символов\n"
|
||||
"• Может содержать буквы, цифры, пробелы\n"
|
||||
"• Это имя будут видеть другие участники"
|
||||
)
|
||||
|
||||
from src.handlers.registration_handlers import start_registration
|
||||
await start_registration(fake_callback, state)
|
||||
await message.answer(
|
||||
text,
|
||||
reply_markup=InlineKeyboardMarkup(inline_keyboard=[
|
||||
[InlineKeyboardButton(text="❌ Отмена", callback_data="back_to_main")]
|
||||
])
|
||||
)
|
||||
|
||||
await state.set_state(RegistrationStates.waiting_for_nickname)
|
||||
|
||||
|
||||
@router.message(CaseInsensitiveCommand("register"))
|
||||
async def cmd_register(message: Message, state: FSMContext):
|
||||
"""Обработчик команды /register (регистронезависимо)"""
|
||||
await btn_registration(message, state)
|
||||
|
||||
|
||||
@router.message(F.text.lower().in_(["регистрация", "регистр", "register"]))
|
||||
async def text_registration(message: Message, state: FSMContext):
|
||||
"""Обработчик текста для регистрации"""
|
||||
await btn_registration(message, state)
|
||||
|
||||
|
||||
@router.message(F.text == "🔑 Мой код")
|
||||
|
||||
@@ -35,6 +35,9 @@ class BotController(IBotController):
|
||||
async def handle_start(self, message: Message):
|
||||
"""Обработать команду /start"""
|
||||
from src.utils.keyboards import get_main_reply_keyboard
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
user = await self.user_service.get_or_create_user(
|
||||
telegram_id=message.from_user.id,
|
||||
@@ -43,6 +46,9 @@ class BotController(IBotController):
|
||||
last_name=message.from_user.last_name
|
||||
)
|
||||
|
||||
# Логирование статуса регистрации
|
||||
logger.info(f"User {message.from_user.id}: is_registered={user.is_registered}, is_admin={self.is_admin(message.from_user.id)}")
|
||||
|
||||
welcome_text = f"👋 Добро пожаловать, {user.first_name or 'дорогой пользователь'}!\n\n"
|
||||
welcome_text += "🎲 Это бот для участия в розыгрышах.\n\n"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user