diff --git a/src/handlers/redraw_handlers.py b/src/handlers/redraw_handlers.py index 89a0c02..5793bad 100644 --- a/src/handlers/redraw_handlers.py +++ b/src/handlers/redraw_handlers.py @@ -314,20 +314,6 @@ async def confirm_winner_callback(callback_query): winner_id = int(callback_query.data.split("_")[-1]) async with async_session_maker() as session: - # Проверяем токен верификации - verification = await WinnerNotificationService.verify_token( - session, - winner_id, - callback_query.from_user.id - ) - - if not verification: - await callback_query.answer( - "❌ Токен недействителен или истек срок действия (24 часа)", - show_alert=True - ) - return - # Получаем информацию о победителе winner_result = await session.execute( select(Winner).where(Winner.id == winner_id) @@ -345,6 +331,26 @@ async def confirm_winner_callback(callback_query): ) return + # Проверяем, что пользователь является владельцем счёта + if winner.account_number: + owner = await AccountService.get_account_owner(session, winner.account_number) + if not owner or owner.telegram_id != callback_query.from_user.id: + await callback_query.answer( + "❌ Вы не являетесь владельцем этого счёта", + show_alert=True + ) + return + + # Проверяем срок действия (24 часа с момента создания winner) + if winner.created_at: + time_since_creation = datetime.now(timezone.utc) - winner.created_at + if time_since_creation > timedelta(hours=24): + await callback_query.answer( + "❌ Срок подтверждения истёк (24 часа). Приз будет разыгран заново.", + show_alert=True + ) + return + # Подтверждаем выигрыш winner.is_confirmed = True winner.confirmed_at = datetime.now(timezone.utc)