Merge pull request #2167 from BEDOLAGA-DEV/dev5

Dev5
This commit is contained in:
Egor
2025-12-19 07:23:00 +03:00
committed by GitHub
4 changed files with 16 additions and 1 deletions

View File

@@ -37,6 +37,7 @@ SUBSCRIPTION_RENEWAL_BALANCE_THRESHOLD_KOPEKS=20000 # Порог баланс
CHANNEL_SUB_ID= # Опционально ID твоего канала (-100)
CHANNEL_IS_REQUIRED_SUB=false # Обязательна ли подписка на канал
CHANNEL_LINK= # Опционально ссылка на канал
CHANNEL_DISABLE_TRIAL_ON_UNSUBSCRIBE=true # Отключать триальные подписки при отписке от канала
# ===== DATABASE CONFIGURATION =====
# Режим базы данных: "auto", "postgresql", "sqlite"

View File

@@ -54,6 +54,7 @@ class Settings(BaseSettings):
CHANNEL_SUB_ID: Optional[str] = None
CHANNEL_LINK: Optional[str] = None
CHANNEL_IS_REQUIRED_SUB: bool = False
CHANNEL_DISABLE_TRIAL_ON_UNSUBSCRIBE: bool = True
DATABASE_URL: Optional[str] = None

View File

@@ -108,7 +108,7 @@ class ChannelCheckerMiddleware(BaseMiddleware):
elif member.status in self.BAD_MEMBER_STATUS:
logger.info(f"❌ Пользователь {telegram_id} не подписан на канал (статус: {member.status})")
if telegram_id:
if telegram_id and settings.CHANNEL_DISABLE_TRIAL_ON_UNSUBSCRIBE:
await self._deactivate_trial_subscription(telegram_id)
await self._capture_start_payload(state, event, bot)
@@ -254,6 +254,13 @@ class ChannelCheckerMiddleware(BaseMiddleware):
break
async def _deactivate_trial_subscription(self, telegram_id: int) -> None:
if not settings.CHANNEL_DISABLE_TRIAL_ON_UNSUBSCRIBE:
logger.debug(
" Пропускаем деактивацию подписки пользователя %s: отключение при отписке выключено",
telegram_id,
)
return
async for db in get_db():
try:
user = await get_user_by_telegram_id(db, telegram_id)

View File

@@ -507,6 +507,12 @@ class MonitoringService:
if not settings.CHANNEL_IS_REQUIRED_SUB:
return
if not settings.CHANNEL_DISABLE_TRIAL_ON_UNSUBSCRIBE:
logger.debug(
" Проверка отписок от канала отключена — деактивация триальных подписок не требуется"
)
return
channel_id = settings.CHANNEL_SUB_ID
if not channel_id:
return