| |
| |
| |
| |
| |
| |
| 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) |
|
|