|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
✘ Commands Available - |
|
|
|
• `{i}mute <reply to msg/ user id>` |
|
Mute user in current chat. |
|
|
|
• `{i}unmute <reply to msg/ user id>` |
|
Unmute user in current chat. |
|
|
|
• `{i}dmute <reply to msg/ user id>` |
|
Mute user in current chat by deleting msgs. |
|
|
|
• `{i}undmute <reply to msg/ use id>` |
|
Unmute dmuted user in current chat. |
|
|
|
• `{i}tmute <time> <reply to msg/ use id>` |
|
s- seconds |
|
m- minutes |
|
h- hours |
|
d- days |
|
Mute user in current chat with time. |
|
""" |
|
from telethon import events |
|
from telethon.utils import get_display_name |
|
|
|
from pyUltroid.dB.mute_db import is_muted, mute, unmute |
|
from pyUltroid.fns.admins import ban_time |
|
|
|
from . import asst, eod, get_string, inline_mention, ultroid_bot, ultroid_cmd |
|
|
|
|
|
@ultroid_bot.on(events.NewMessage(incoming=True)) |
|
async def watcher(event): |
|
if is_muted(event.chat_id, event.sender_id): |
|
await event.delete() |
|
if event.via_bot and is_muted(event.chat_id, event.via_bot_id): |
|
await event.delete() |
|
|
|
|
|
@ultroid_cmd( |
|
pattern="dmute( (.*)|$)", |
|
) |
|
async def startmute(event): |
|
xx = await event.eor("`Muting...`") |
|
if input_ := event.pattern_match.group(1).strip(): |
|
try: |
|
userid = await event.client.parse_id(input_) |
|
except Exception as x: |
|
return await xx.edit(str(x)) |
|
elif event.reply_to_msg_id: |
|
reply = await event.get_reply_message() |
|
userid = reply.sender_id |
|
if reply.out or userid in [ultroid_bot.me.id, asst.me.id]: |
|
return await xx.eor("`You cannot mute yourself or your assistant bot.`") |
|
elif event.is_private: |
|
userid = event.chat_id |
|
else: |
|
return await xx.eor("`Reply to a user or add their userid.`", time=5) |
|
chat = await event.get_chat() |
|
if "admin_rights" in vars(chat) and vars(chat)["admin_rights"] is not None: |
|
if not chat.admin_rights.delete_messages: |
|
return await xx.eor("`No proper admin rights...`", time=5) |
|
elif "creator" not in vars(chat) and not event.is_private: |
|
return await xx.eor("`No proper admin rights...`", time=5) |
|
if is_muted(event.chat_id, userid): |
|
return await xx.eor("`This user is already muted in this chat.`", time=5) |
|
mute(event.chat_id, userid) |
|
await xx.eor("`Successfully muted...`", time=3) |
|
|
|
|
|
@ultroid_cmd( |
|
pattern="undmute( (.*)|$)", |
|
) |
|
async def endmute(event): |
|
xx = await event.eor("`Unmuting...`") |
|
if input_ := event.pattern_match.group(1).strip(): |
|
try: |
|
userid = await event.client.parse_id(input_) |
|
except Exception as x: |
|
return await xx.edit(str(x)) |
|
elif event.reply_to_msg_id: |
|
userid = (await event.get_reply_message()).sender_id |
|
elif event.is_private: |
|
userid = event.chat_id |
|
else: |
|
return await xx.eor("`Reply to a user or add their userid.`", time=5) |
|
if not is_muted(event.chat_id, userid): |
|
return await xx.eor("`This user is not muted in this chat.`", time=3) |
|
unmute(event.chat_id, userid) |
|
await xx.eor("`Successfully unmuted...`", time=3) |
|
|
|
|
|
@ultroid_cmd( |
|
pattern="tmute", |
|
groups_only=True, |
|
manager=True, |
|
) |
|
async def _(e): |
|
xx = await e.eor("`Muting...`") |
|
huh = e.text.split() |
|
try: |
|
tme = huh[1] |
|
except IndexError: |
|
return await xx.eor("`Time till mute?`", time=5) |
|
try: |
|
input_ = huh[2] |
|
except IndexError: |
|
input_ = "" |
|
chat = await e.get_chat() |
|
if e.reply_to_msg_id: |
|
reply = await e.get_reply_message() |
|
userid = reply.sender_id |
|
name = (await reply.get_sender()).first_name |
|
elif input_: |
|
userid = await e.client.parse_id(input_) |
|
name = (await e.client.get_entity(userid)).first_name |
|
else: |
|
return await xx.eor(get_string("tban_1"), time=3) |
|
if userid == ultroid_bot.uid: |
|
return await xx.eor("`I can't mute myself.`", time=3) |
|
try: |
|
bun = ban_time(tme) |
|
await e.client.edit_permissions( |
|
chat.id, |
|
userid, |
|
until_date=bun, |
|
send_messages=False, |
|
) |
|
await eod( |
|
xx, |
|
f"`Successfully Muted` [{name}](tg://user?id={userid}) `in {chat.title} for {tme}`", |
|
time=5, |
|
) |
|
except BaseException as m: |
|
await xx.eor(f"`{m}`", time=5) |
|
|
|
|
|
@ultroid_cmd( |
|
pattern="unmute( (.*)|$)", |
|
admins_only=True, |
|
manager=True, |
|
) |
|
async def _(e): |
|
xx = await e.eor("`Unmuting...`") |
|
input = e.pattern_match.group(1).strip() |
|
chat = await e.get_chat() |
|
if e.reply_to_msg_id: |
|
reply = await e.get_reply_message() |
|
userid = reply.sender_id |
|
name = (await reply.get_sender()).first_name |
|
elif input: |
|
userid = await e.client.parse_id(input) |
|
name = (await e.client.get_entity(userid)).first_name |
|
else: |
|
return await xx.eor(get_string("tban_1"), time=3) |
|
try: |
|
await e.client.edit_permissions( |
|
chat.id, |
|
userid, |
|
until_date=None, |
|
send_messages=True, |
|
) |
|
await eod( |
|
xx, |
|
f"`Successfully Unmuted` [{name}](tg://user?id={userid}) `in {chat.title}`", |
|
time=5, |
|
) |
|
except BaseException as m: |
|
await xx.eor(f"`{m}`", time=5) |
|
|
|
|
|
@ultroid_cmd( |
|
pattern="mute( (.*)|$)", admins_only=True, manager=True, require="ban_users" |
|
) |
|
async def _(e): |
|
xx = await e.eor("`Muting...`") |
|
input = e.pattern_match.group(1).strip() |
|
chat = await e.get_chat() |
|
if e.reply_to_msg_id: |
|
userid = (await e.get_reply_message()).sender_id |
|
name = get_display_name(await e.client.get_entity(userid)) |
|
elif input: |
|
try: |
|
userid = await e.client.parse_id(input) |
|
name = inline_mention(await e.client.get_entity(userid)) |
|
except Exception as x: |
|
return await xx.edit(str(x)) |
|
else: |
|
return await xx.eor(get_string("tban_1"), time=3) |
|
if userid == ultroid_bot.uid: |
|
return await xx.eor("`I can't mute myself.`", time=3) |
|
try: |
|
await e.client.edit_permissions( |
|
chat.id, |
|
userid, |
|
until_date=None, |
|
send_messages=False, |
|
) |
|
await eod( |
|
xx, |
|
f"`Successfully Muted` {name} `in {chat.title}`", |
|
) |
|
except BaseException as m: |
|
await xx.eor(f"`{m}`", time=5) |
|
|