github-actions[bot]
Deploy 2026-09-25T08:00:19Z
83ecca9
Raw History Blame Contribute Delete
1.79 kB
from pyrogram import Client
from pyrogram.enums import ChatMemberStatus
from pyrogram.types import ChatMemberUpdated
from Backend import db
from Backend.config import Telegram
from Backend.helper.settings_manager import SettingsManager
from Backend.logger import LOGGER
#----- Kick joiners of the subscription group who lack an active subscription
@Client.on_chat_member_updated()
async def on_user_join(client: Client, chat_member_updated: ChatMemberUpdated):
if not SettingsManager.current().subscription:
return
if chat_member_updated.chat.id != SettingsManager.current().subscription_group_id:
return
new_status = chat_member_updated.new_chat_member.status if chat_member_updated.new_chat_member else None
if new_status != ChatMemberStatus.MEMBER:
return
user = chat_member_updated.new_chat_member.user
#----- Never kick the owner or configured approvers
if user.id == Telegram.OWNER_ID or user.id in (SettingsManager.current().approver_ids or []):
return
db_user = await db.get_user(user.id)
if db.is_subscription_active(db_user):
return
try:
await client.ban_chat_member(chat_member_updated.chat.id, user.id)
await client.unban_chat_member(chat_member_updated.chat.id, user.id)
LOGGER.info(f"Kicked unauthorized user {user.id} from group {chat_member_updated.chat.id}")
await client.send_message(
user.id,
"❌ <b>Access Denied</b>\n\n"
"You were removed from the private group because you do not have an active subscription.\n"
"Please press /start in this bot to purchase or renew your subscription."
)
except Exception as e:
LOGGER.error(f"Failed to kick/notify unauthorized user {user.id}: {e}")