streamio / Backend /pyrofork /plugins /group_security.py
Karan Adhikari
`Telegram-Stremio v5.0.0`
2c41c5f unverified
Raw History Blame Contribute Delete
1.59 kB
from pyrogram import Client
from pyrogram.enums import ChatMemberStatus
from pyrogram.types import ChatMemberUpdated
from Backend import db
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
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}")