fix sub/captcha for gifts

This commit is contained in:
Vladless
2025-06-21 19:54:39 +03:00
parent 318598026c
commit 36b074b209
3 changed files with 25 additions and 3 deletions
+7 -3
View File
@@ -130,15 +130,19 @@ class CouponUsage(DictLikeMixin, Base):
class Referral(DictLikeMixin, Base):
__tablename__ = "referrals"
referred_tg_id = Column(BigInteger, ForeignKey("users.tg_id"), primary_key=True)
referrer_tg_id = Column(BigInteger, ForeignKey("users.tg_id"), primary_key=True)
referred_tg_id = Column(BigInteger, ForeignKey("users.tg_id", ondelete="CASCADE"), primary_key=True)
referrer_tg_id = Column(BigInteger, ForeignKey("users.tg_id", ondelete="CASCADE"), primary_key=True)
reward_issued = Column(Boolean, default=False)
class Notification(DictLikeMixin, Base):
__tablename__ = "notifications"
tg_id = Column(BigInteger, ForeignKey("users.tg_id"), primary_key=True)
tg_id = Column(
BigInteger,
ForeignKey("users.tg_id", ondelete="CASCADE"),
primary_key=True
)
notification_type = Column(String, primary_key=True)
last_notification_time = Column(DateTime, default=datetime.utcnow)
+18
View File
@@ -3,6 +3,7 @@ from typing import Any, Awaitable, Callable
from aiogram import BaseMiddleware
from aiogram.types import InlineKeyboardButton, Message, Update
from aiogram.utils.keyboard import InlineKeyboardBuilder
from aiogram.fsm.context import FSMContext
from bot import bot
from config import CHANNEL_EXISTS, CHANNEL_ID, CHANNEL_REQUIRED, CHANNEL_URL
@@ -41,6 +42,23 @@ class SubscriptionMiddleware(BaseMiddleware):
member = await bot.get_chat_member(CHANNEL_ID, tg_id)
if member.status not in ("member", "administrator", "creator"):
logger.info(f"[SubMiddleware] Пользователь {tg_id} не подписан")
state: FSMContext = data.get("state")
if state:
original_text = message.text or message.caption
user_data = {
"tg_id": message.from_user.id,
"username": message.from_user.username,
"first_name": message.from_user.first_name,
"last_name": message.from_user.last_name,
"language_code": message.from_user.language_code,
"is_bot": message.from_user.is_bot,
}
await state.update_data(
original_text=original_text,
user_data=user_data,
)
return await self._ask_to_subscribe(message)
except Exception as e:
logger.warning(