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 == "📝 Регистрация")
|
@router.message(F.text == "📝 Регистрация")
|
||||||
async def btn_registration(message: Message, state: FSMContext):
|
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(
|
logger.info(f"User {message.from_user.id} pressed Registration button")
|
||||||
id="fake",
|
|
||||||
from_user=message.from_user,
|
text = (
|
||||||
chat_instance="0",
|
"📝 Регистрация в системе\n\n"
|
||||||
data="start_registration",
|
"Для участия в розыгрышах необходимо зарегистрироваться.\n\n"
|
||||||
message=message
|
"Шаг 1 из 3: Придумайте никнейм\n\n"
|
||||||
|
"🎭 Введите ваш никнейм для чата:\n"
|
||||||
|
"• От 2 до 20 символов\n"
|
||||||
|
"• Может содержать буквы, цифры, пробелы\n"
|
||||||
|
"• Это имя будут видеть другие участники"
|
||||||
)
|
)
|
||||||
|
|
||||||
from src.handlers.registration_handlers import start_registration
|
await message.answer(
|
||||||
await start_registration(fake_callback, state)
|
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 == "🔑 Мой код")
|
@router.message(F.text == "🔑 Мой код")
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ class BotController(IBotController):
|
|||||||
async def handle_start(self, message: Message):
|
async def handle_start(self, message: Message):
|
||||||
"""Обработать команду /start"""
|
"""Обработать команду /start"""
|
||||||
from src.utils.keyboards import get_main_reply_keyboard
|
from src.utils.keyboards import get_main_reply_keyboard
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
user = await self.user_service.get_or_create_user(
|
user = await self.user_service.get_or_create_user(
|
||||||
telegram_id=message.from_user.id,
|
telegram_id=message.from_user.id,
|
||||||
@@ -43,6 +46,9 @@ class BotController(IBotController):
|
|||||||
last_name=message.from_user.last_name
|
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 = f"👋 Добро пожаловать, {user.first_name or 'дорогой пользователь'}!\n\n"
|
||||||
welcome_text += "🎲 Это бот для участия в розыгрышах.\n\n"
|
welcome_text += "🎲 Это бот для участия в розыгрышах.\n\n"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user