Spaces:
Runtime error
Runtime error
| import datetime | |
| import time | |
| from pyrogram import Client | |
| from pyrogram.enums import ChatType | |
| from pyrogram.types import ChatPermissions, Message | |
| from . import HelpMenu, Symbols, hellbot, on_message | |
| async def lockGC(client: Client, message: Message): | |
| if not message.chat.type == ChatType.SUPERGROUP: | |
| return await hellbot.delete(message, "Only supergroups are supported.") | |
| if len(message.command) < 2: | |
| return await hellbot.delete(message, "Give me something to lock.") | |
| lock_type = message.command[1].lower() | |
| if len(message.command) > 2: | |
| time_data = message.command[2] | |
| if time_data.endswith(("d", "day", "days")): | |
| mtime = int(time_data.split("d")[0].strip()) * 24 * 60 * 60 | |
| elif time_data.endswith(("h", "hrs", "hour", "hours")): | |
| mtime = int(time_data.split("h")[0].strip()) * 60 * 60 | |
| elif time_data.endswith(("m", "mins", "minute", "minutes")): | |
| mtime = int(time_data.split("m")[0].strip()) * 60 | |
| else: | |
| mtime = 0 | |
| else: | |
| mtime = 0 | |
| time_data = "forever" | |
| if lock_type == "all": | |
| perms = ChatPermissions( | |
| can_send_messages=False, | |
| can_send_media_messages=False, | |
| can_change_info=False, | |
| can_invite_users=False, | |
| can_pin_messages=False, | |
| can_add_web_page_previews=False, | |
| can_send_other_messages=False, | |
| can_send_polls=False, | |
| ) | |
| elif lock_type == "messages": | |
| perms = ChatPermissions(can_send_messages=False) | |
| elif lock_type == "media": | |
| perms = ChatPermissions(can_send_media_messages=False) | |
| elif lock_type == "info": | |
| perms = ChatPermissions(can_change_info=False) | |
| elif lock_type == "invites": | |
| perms = ChatPermissions(can_invite_users=False) | |
| elif lock_type == "pin": | |
| perms = ChatPermissions(can_pin_messages=False) | |
| elif lock_type in ["gif", "sticker", "games", "inline"]: | |
| perms = ChatPermissions(can_send_other_messages=False) | |
| elif lock_type == "polls": | |
| perms = ChatPermissions(can_send_polls=False) | |
| elif lock_type == "url": | |
| perms = ChatPermissions(can_add_web_page_previews=False) | |
| else: | |
| return await hellbot.delete(message, "Invalid lock type.") | |
| until_date = datetime.datetime.fromtimestamp(time.time() + mtime) | |
| await client.restrict_chat_member( | |
| message.chat.id, message.from_user.id, perms, until_date | |
| ) | |
| await hellbot.edit( | |
| message, | |
| f"**Locked {lock_type} for {message.chat.title}**\n\n**Duration:** `{time_data}`", | |
| ) | |
| async def unlockGC(client: Client, message: Message): | |
| if not message.chat.type == ChatType.SUPERGROUP: | |
| return await hellbot.delete(message, "Only supergroups are supported.") | |
| if len(message.command) < 2: | |
| return await hellbot.delete(message, "Give me something to unlock.") | |
| lock_type = message.command[1].lower() | |
| if lock_type == "all": | |
| perms = ChatPermissions( | |
| can_send_messages=True, | |
| can_send_media_messages=True, | |
| can_change_info=True, | |
| can_invite_users=True, | |
| can_pin_messages=True, | |
| can_add_web_page_previews=True, | |
| can_send_polls=True, | |
| can_send_other_messages=True, | |
| ) | |
| elif lock_type == "messages": | |
| perms = ChatPermissions(can_send_messages=True) | |
| elif lock_type == "media": | |
| perms = ChatPermissions(can_send_media_messages=True) | |
| elif lock_type == "info": | |
| perms = ChatPermissions(can_change_info=True) | |
| elif lock_type == "invites": | |
| perms = ChatPermissions(can_invite_users=True) | |
| elif lock_type == "pin": | |
| perms = ChatPermissions(can_pin_messages=True) | |
| elif lock_type in ["gif", "sticker", "games", "inline"]: | |
| perms = ChatPermissions(can_send_other_messages=True) | |
| elif lock_type == "polls": | |
| perms = ChatPermissions(can_send_polls=True) | |
| elif lock_type == "url": | |
| perms = ChatPermissions(can_add_web_page_previews=True) | |
| else: | |
| return await hellbot.delete(message, "Invalid lock type.") | |
| await client.restrict_chat_member(message.chat.id, message.from_user.id, perms) | |
| await hellbot.edit(message, f"**Unlocked {lock_type} for {message.chat.title}**") | |
| async def lockTypes(_, message: Message): | |
| await hellbot.edit( | |
| message, | |
| "**Lock Types:**\n\n" | |
| f"{Symbols.triangle_right} `all` - __Locks all permissions__\n" | |
| f"{Symbols.triangle_right} `messages` - __Locks sending messages__\n" | |
| f"{Symbols.triangle_right} `media` - __Locks sending media__\n" | |
| f"{Symbols.triangle_right} `info` - __Locks changing group info__\n" | |
| f"{Symbols.triangle_right} `invites` - __Locks inviting users__\n" | |
| f"{Symbols.triangle_right} `pin` - __Locks pinning messages__\n" | |
| f"{Symbols.triangle_right} `gif` - __Locks sending gifs__\n" | |
| f"{Symbols.triangle_right} `sticker` - __Locks sending stickers__\n" | |
| f"{Symbols.triangle_right} `games` - __Locks sending games__\n" | |
| f"{Symbols.triangle_right} `inline` - __Locks sending inline results__\n" | |
| f"{Symbols.triangle_right} `polls` - __Locks sending polls__\n" | |
| f"{Symbols.triangle_right} `url` - __Locks sending urls__\n", | |
| ) | |
| HelpMenu("locker").add( | |
| "lock", | |
| "<lock type> <duration (optional)>", | |
| "Locks a permission for the group chat.", | |
| "lock all 2d", | |
| "Duration is optional and can be in days, hours or minutes.", | |
| ).add( | |
| "unlock", | |
| "<lock type>", | |
| "Unlocks a permission for the group chat.", | |
| "unlock all", | |
| "Unlock all permissions for the group chat.", | |
| ).add( | |
| "locktypes", None, "Shows the available lock types.", "locktypes" | |
| ).info( | |
| "Chat Permissions Locker" | |
| ).done() | |