| | |
| | |
| | |
| | |
| | |
| | |
| | from . import get_help |
| |
|
| | __doc__ = get_help("help_chats") |
| |
|
| |
|
| | from telethon.errors import ChatAdminRequiredError as no_admin |
| | from telethon.tl.functions.channels import ( |
| | CreateChannelRequest, |
| | DeleteChannelRequest, |
| | EditPhotoRequest, |
| | GetFullChannelRequest, |
| | UpdateUsernameRequest, |
| | ) |
| | from telethon.tl.functions.messages import ( |
| | CreateChatRequest, |
| | ExportChatInviteRequest, |
| | GetFullChatRequest, |
| | ) |
| | from telethon.tl.types import ( |
| | ChannelParticipantsKicked, |
| | User, |
| | UserStatusEmpty, |
| | UserStatusLastMonth, |
| | UserStatusLastWeek, |
| | UserStatusOffline, |
| | UserStatusOnline, |
| | UserStatusRecently, |
| | ) |
| |
|
| | from . import HNDLR, LOGS, asst, con, get_string, mediainfo, os, types, udB, ultroid_cmd |
| |
|
| |
|
| | @ultroid_cmd( |
| | pattern="delchat", |
| | groups_only=True, |
| | ) |
| | async def _(e): |
| | xx = await e.eor(get_string("com_1")) |
| | try: |
| | match = e.text.split(" ", maxsplit=1)[1] |
| | chat = await e.client.parse_id(match) |
| | except IndexError: |
| | chat = e.chat_id |
| | try: |
| | await e.client(DeleteChannelRequest(chat)) |
| | except TypeError: |
| | return await xx.eor(get_string("chats_1"), time=10) |
| | except no_admin: |
| | return await xx.eor(get_string("chats_2"), time=10) |
| | await e.client.send_message( |
| | int(udB.get_key("LOG_CHANNEL")), get_string("chats_6").format(e.chat_id) |
| | ) |
| |
|
| |
|
| | @ultroid_cmd( |
| | pattern="getlink( (.*)|$)", |
| | groups_only=True, |
| | manager=True, |
| | ) |
| | async def _(e): |
| | reply = await e.get_reply_message() |
| | match = e.pattern_match.group(1).strip() |
| | if reply and not isinstance(reply.sender, User): |
| | chat = await reply.get_sender() |
| | else: |
| | chat = await e.get_chat() |
| | if hasattr(chat, "username") and chat.username: |
| | return await e.eor(f"Username: @{chat.username}") |
| | request, usage, title, link = None, None, None, None |
| | if match: |
| | split = match.split(maxsplit=1) |
| | request = split[0] in ["r", "request"] |
| | title = "Created by Ultroid" |
| | if len(split) > 1: |
| | match = split[1] |
| | spli = match.split(maxsplit=1) |
| | if spli[0].isdigit(): |
| | usage = int(spli[0]) |
| | if len(spli) > 1: |
| | title = spli[1] |
| | elif not request: |
| | if match.isdigit(): |
| | usage = int(match) |
| | else: |
| | title = match |
| | if request and usage: |
| | usage = 0 |
| | if request or title: |
| | try: |
| | r = await e.client( |
| | ExportChatInviteRequest( |
| | e.chat_id, |
| | request_needed=request, |
| | usage_limit=usage, |
| | title=title, |
| | ), |
| | ) |
| | except no_admin: |
| | return await e.eor(get_string("chats_2"), time=10) |
| | link = r.link |
| | else: |
| | if isinstance(chat, types.Chat): |
| | FC = await e.client(GetFullChatRequest(chat.id)) |
| | elif isinstance(chat, types.Channel): |
| | FC = await e.client(GetFullChannelRequest(chat.id)) |
| | else: |
| | return |
| | Inv = FC.full_chat.exported_invite |
| | if Inv and not Inv.revoked: |
| | link = Inv.link |
| | if link: |
| | return await e.eor(f"Link:- {link}") |
| | await e.eor("`Failed to getlink!\nSeems like link is inaccessible to you...`") |
| |
|
| |
|
| | @ultroid_cmd( |
| | pattern="create (b|g|c)(?: |$)(.*)", |
| | ) |
| | async def _(e): |
| | type_of_group = e.pattern_match.group(1).strip() |
| | group_name = e.pattern_match.group(2) |
| | username = None |
| | if " ; " in group_name: |
| | group_ = group_name.split(" ; ", maxsplit=1) |
| | group_name = group_[0] |
| | username = group_[1] |
| | xx = await e.eor(get_string("com_1")) |
| | if type_of_group == "b": |
| | try: |
| | r = await e.client( |
| | CreateChatRequest( |
| | users=[asst.me.username], |
| | title=group_name, |
| | ), |
| | ) |
| | created_chat_id = r.chats[0].id |
| | result = await e.client( |
| | ExportChatInviteRequest( |
| | peer=created_chat_id, |
| | ), |
| | ) |
| | await xx.edit( |
| | get_string("chats_4").format(group_name, result.link), |
| | link_preview=False, |
| | ) |
| | except Exception as ex: |
| | await xx.edit(str(ex)) |
| | elif type_of_group in ["g", "c"]: |
| | try: |
| | r = await e.client( |
| | CreateChannelRequest( |
| | title=group_name, |
| | about=get_string("chats_5"), |
| | megagroup=type_of_group != "c", |
| | ) |
| | ) |
| |
|
| | created_chat_id = r.chats[0].id |
| | if username: |
| | await e.client(UpdateUsernameRequest(created_chat_id, username)) |
| | result = f"https://t.me/{username}" |
| | else: |
| | result = ( |
| | await e.client( |
| | ExportChatInviteRequest( |
| | peer=created_chat_id, |
| | ), |
| | ) |
| | ).link |
| | await xx.edit( |
| | get_string("chats_6").format(f"[{group_name}]({result})"), |
| | link_preview=False, |
| | ) |
| | except Exception as ex: |
| | await xx.edit(str(ex)) |
| |
|
| |
|
| | |
| |
|
| |
|
| | @ultroid_cmd( |
| | pattern="setgpic( (.*)|$)", admins_only=True, manager=True, require="change_info" |
| | ) |
| | async def _(ult): |
| | if not ult.is_reply: |
| | return await ult.eor("`Reply to a Media..`", time=5) |
| | match = ult.pattern_match.group(1).strip() |
| | if not ult.client._bot and match: |
| | try: |
| | chat = await ult.client.parse_id(match) |
| | except Exception as ok: |
| | return await ult.eor(str(ok)) |
| | else: |
| | chat = ult.chat_id |
| | reply = await ult.get_reply_message() |
| | if reply.photo or reply.sticker or reply.video: |
| | replfile = await reply.download_media() |
| | elif reply.document and reply.document.thumbs: |
| | replfile = await reply.download_media(thumb=-1) |
| | else: |
| | return await ult.eor("Reply to a Photo or Video..") |
| | mediain = mediainfo(reply.media) |
| | if "animated" in mediain: |
| | replfile = await con.convert(replfile, convert_to="mp4") |
| | else: |
| | replfile = await con.convert( |
| | replfile, outname="chatphoto", allowed_formats=["jpg", "png", "mp4"] |
| | ) |
| | file = await ult.client.upload_file(replfile) |
| | try: |
| | if "pic" not in mediain: |
| | file = types.InputChatUploadedPhoto(video=file) |
| | await ult.client(EditPhotoRequest(chat, file)) |
| | await ult.eor("`Group Photo has Successfully Changed !`", time=5) |
| | except Exception as ex: |
| | await ult.eor(f"Error occured.\n`{str(ex)}`", time=5) |
| | os.remove(replfile) |
| |
|
| |
|
| | @ultroid_cmd( |
| | pattern="delgpic( (.*)|$)", admins_only=True, manager=True, require="change_info" |
| | ) |
| | async def _(ult): |
| | match = ult.pattern_match.group(1).strip() |
| | chat = ult.chat_id |
| | if not ult.client._bot and match: |
| | chat = match |
| | try: |
| | await ult.client(EditPhotoRequest(chat, types.InputChatPhotoEmpty())) |
| | text = "`Removed Chat Photo..`" |
| | except Exception as E: |
| | text = str(E) |
| | return await ult.eor(text, time=5) |
| |
|
| |
|
| | @ultroid_cmd(pattern="unbanall$", manager=True, admins_only=True, require="ban_users") |
| | async def _(event): |
| | xx = await event.eor("Searching Participant Lists.") |
| | p = 0 |
| | title = (await event.get_chat()).title |
| | async for i in event.client.iter_participants( |
| | event.chat_id, |
| | filter=ChannelParticipantsKicked, |
| | aggressive=True, |
| | ): |
| | try: |
| | await event.client.edit_permissions(event.chat_id, i, view_messages=True) |
| | p += 1 |
| | except no_admin: |
| | pass |
| | except BaseException as er: |
| | LOGS.exception(er) |
| | await xx.eor(f"{title}: {p} unbanned", time=5) |
| |
|
| |
|
| | @ultroid_cmd( |
| | pattern="rmusers( (.*)|$)", |
| | groups_only=True, |
| | admins_only=True, |
| | fullsudo=True, |
| | ) |
| | async def _(event): |
| | xx = await event.eor(get_string("com_1")) |
| | input_str = event.pattern_match.group(1).strip() |
| | p, a, b, c, d, m, n, y, w, o, q, r = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 |
| | async for i in event.client.iter_participants(event.chat_id): |
| | p += 1 |
| | if isinstance(i.status, UserStatusEmpty): |
| | if "empty" in input_str: |
| | try: |
| | await event.client.kick_participant(event.chat_id, i) |
| | c += 1 |
| | except BaseException: |
| | pass |
| | else: |
| | y += 1 |
| | if isinstance(i.status, UserStatusLastMonth): |
| | if "month" in input_str: |
| | try: |
| | await event.client.kick_participant(event.chat_id, i) |
| | c += 1 |
| | except BaseException: |
| | pass |
| | else: |
| | m += 1 |
| | if isinstance(i.status, UserStatusLastWeek): |
| | if "week" in input_str: |
| | try: |
| | await event.client.kick_participant(event.chat_id, i) |
| | c += 1 |
| | except BaseException: |
| | pass |
| | else: |
| | w += 1 |
| | if isinstance(i.status, UserStatusOffline): |
| | if "offline" in input_str: |
| | try: |
| | await event.client.kick_participant(event.chat_id, i) |
| | c += 1 |
| | except BaseException: |
| | pass |
| | else: |
| | o += 1 |
| | if isinstance(i.status, UserStatusOnline): |
| | if "online" in input_str: |
| | try: |
| | await event.client.kick_participant(event.chat_id, i) |
| | c += 1 |
| | except BaseException: |
| | pass |
| | else: |
| | q += 1 |
| | if isinstance(i.status, UserStatusRecently): |
| | if "recently" in input_str: |
| | try: |
| | await event.client.kick_participant(event.chat_id, i) |
| | c += 1 |
| | except BaseException: |
| | pass |
| | else: |
| | r += 1 |
| | if i.bot: |
| | if "bot" in input_str: |
| | try: |
| | await event.client.kick_participant(event.chat_id, i) |
| | c += 1 |
| | except BaseException: |
| | pass |
| | else: |
| | b += 1 |
| | elif i.deleted: |
| | if "deleted" in input_str: |
| | try: |
| | await event.client.kick_participant(event.chat_id, i) |
| | c += 1 |
| | except BaseException: |
| | pass |
| | else: |
| | d += 1 |
| | elif i.status is None: |
| | if "none" in input_str: |
| | try: |
| | await event.client.kick_participant(event.chat_id, i) |
| | c += 1 |
| | except BaseException: |
| | pass |
| | else: |
| | n += 1 |
| | if input_str: |
| | required_string = f"**>> Kicked** `{c} / {p}` **users**\n\n" |
| | else: |
| | required_string = f"**>> Total** `{p}` **users**\n\n" |
| | required_string += f" `{HNDLR}rmusers deleted` **••** `{d}`\n" |
| | required_string += f" `{HNDLR}rmusers empty` **••** `{y}`\n" |
| | required_string += f" `{HNDLR}rmusers month` **••** `{m}`\n" |
| | required_string += f" `{HNDLR}rmusers week` **••** `{w}`\n" |
| | required_string += f" `{HNDLR}rmusers offline` **••** `{o}`\n" |
| | required_string += f" `{HNDLR}rmusers online` **••** `{q}`\n" |
| | required_string += f" `{HNDLR}rmusers recently` **••** `{r}`\n" |
| | required_string += f" `{HNDLR}rmusers bot` **••** `{b}`\n" |
| | required_string += f" `{HNDLR}rmusers none` **••** `{n}`" |
| | await xx.eor(required_string) |
| |
|