Spaces:
Sleeping
Sleeping
# Ultroid - UserBot | |
# Copyright (C) 2021-2023 TeamUltroid | |
# | |
# This file is a part of < https://github.com/TeamUltroid/Ultroid/ > | |
# PLease read the GNU Affero General Public License in | |
# <https://www.github.com/TeamUltroid/Ultroid/blob/main/LICENSE/>. | |
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 | |
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) | |
) | |
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...`") | |
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)) | |
# ---------------------------------------------------------------- # | |
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) | |
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) | |
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) | |
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 # Total Count | |
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) | |