mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-01-19 19:32:10 +00:00
@@ -37,6 +37,7 @@ SUBSCRIPTION_RENEWAL_BALANCE_THRESHOLD_KOPEKS=20000 # Порог баланс
|
|||||||
CHANNEL_SUB_ID= # Опционально ID твоего канала (-100)
|
CHANNEL_SUB_ID= # Опционально ID твоего канала (-100)
|
||||||
CHANNEL_IS_REQUIRED_SUB=false # Обязательна ли подписка на канал
|
CHANNEL_IS_REQUIRED_SUB=false # Обязательна ли подписка на канал
|
||||||
CHANNEL_LINK= # Опционально ссылка на канал
|
CHANNEL_LINK= # Опционально ссылка на канал
|
||||||
|
CHANNEL_DISABLE_TRIAL_ON_UNSUBSCRIBE=true # Отключать триальные подписки при отписке от канала
|
||||||
|
|
||||||
# ===== DATABASE CONFIGURATION =====
|
# ===== DATABASE CONFIGURATION =====
|
||||||
# Режим базы данных: "auto", "postgresql", "sqlite"
|
# Режим базы данных: "auto", "postgresql", "sqlite"
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ class Settings(BaseSettings):
|
|||||||
CHANNEL_SUB_ID: Optional[str] = None
|
CHANNEL_SUB_ID: Optional[str] = None
|
||||||
CHANNEL_LINK: Optional[str] = None
|
CHANNEL_LINK: Optional[str] = None
|
||||||
CHANNEL_IS_REQUIRED_SUB: bool = False
|
CHANNEL_IS_REQUIRED_SUB: bool = False
|
||||||
|
CHANNEL_DISABLE_TRIAL_ON_UNSUBSCRIBE: bool = True
|
||||||
|
|
||||||
DATABASE_URL: Optional[str] = None
|
DATABASE_URL: Optional[str] = None
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ class ChannelCheckerMiddleware(BaseMiddleware):
|
|||||||
elif member.status in self.BAD_MEMBER_STATUS:
|
elif member.status in self.BAD_MEMBER_STATUS:
|
||||||
logger.info(f"❌ Пользователь {telegram_id} не подписан на канал (статус: {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._deactivate_trial_subscription(telegram_id)
|
||||||
|
|
||||||
await self._capture_start_payload(state, event, bot)
|
await self._capture_start_payload(state, event, bot)
|
||||||
@@ -254,6 +254,13 @@ class ChannelCheckerMiddleware(BaseMiddleware):
|
|||||||
break
|
break
|
||||||
|
|
||||||
async def _deactivate_trial_subscription(self, telegram_id: int) -> None:
|
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():
|
async for db in get_db():
|
||||||
try:
|
try:
|
||||||
user = await get_user_by_telegram_id(db, telegram_id)
|
user = await get_user_by_telegram_id(db, telegram_id)
|
||||||
|
|||||||
@@ -507,6 +507,12 @@ class MonitoringService:
|
|||||||
if not settings.CHANNEL_IS_REQUIRED_SUB:
|
if not settings.CHANNEL_IS_REQUIRED_SUB:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if not settings.CHANNEL_DISABLE_TRIAL_ON_UNSUBSCRIBE:
|
||||||
|
logger.debug(
|
||||||
|
"ℹ️ Проверка отписок от канала отключена — деактивация триальных подписок не требуется"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
channel_id = settings.CHANNEL_SUB_ID
|
channel_id = settings.CHANNEL_SUB_ID
|
||||||
if not channel_id:
|
if not channel_id:
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user