|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
✘ Commands Available - |
|
|
|
At Night it will turn off everyone permission to send message in an all groups which you added via `{i}addnight` |
|
And Turn On auto at morning |
|
|
|
• `{i}addnm` |
|
Add NightMode |
|
To Add Group To Auto Night Mode. |
|
|
|
• `{i}remnm` |
|
Remove NightMode |
|
To remove Group From Auto Night Mode |
|
|
|
• `{i}listnm` |
|
List NightMode |
|
To Get All List of Groups where NightMode Active. |
|
|
|
• `{i}nmtime <close hour> <close min> <open hour> <open min>` |
|
NightMode Time |
|
By Default Its close 00:00 , open 07:00 |
|
Use 24hr format |
|
Ex- `nmtime 01 00 06 30` |
|
""" |
|
|
|
from . import LOGS |
|
|
|
try: |
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler |
|
except ImportError: |
|
LOGS.error("nightmode: 'apscheduler' not Installed!") |
|
AsyncIOScheduler = None |
|
|
|
from telethon.tl.functions.messages import EditChatDefaultBannedRightsRequest |
|
from telethon.tl.types import ChatBannedRights |
|
|
|
from pyUltroid.dB.base import KeyManager |
|
|
|
from . import get_string, udB, ultroid_bot, ultroid_cmd |
|
|
|
keym = KeyManager("NIGHT_CHATS", cast=list) |
|
|
|
|
|
@ultroid_cmd(pattern="nmtime( (.*)|$)") |
|
async def set_time(e): |
|
if not e.pattern_match.group(1).strip(): |
|
return await e.eor(get_string("nightm_1")) |
|
try: |
|
ok = e.text.split(maxsplit=1)[1].split() |
|
if len(ok) != 4: |
|
return await e.eor(get_string("nightm_1")) |
|
tm = [int(x) for x in ok] |
|
udB.set_key("NIGHT_TIME", str(tm)) |
|
await e.eor(get_string("nightm_2")) |
|
except BaseException: |
|
await e.eor(get_string("nightm_1")) |
|
|
|
|
|
@ultroid_cmd(pattern="addnm( (.*)|$)") |
|
async def add_grp(e): |
|
if pat := e.pattern_match.group(1).strip(): |
|
try: |
|
keym.add((await ultroid_bot.get_entity(pat)).id) |
|
return await e.eor(f"Done, Added {pat} To Night Mode.") |
|
except BaseException: |
|
return await e.eor(get_string("nightm_5"), time=5) |
|
keym.add(e.chat_id) |
|
await e.eor(get_string("nightm_3")) |
|
|
|
|
|
@ultroid_cmd(pattern="remnm( (.*)|$)") |
|
async def r_em_grp(e): |
|
if pat := e.pattern_match.group(1).strip(): |
|
try: |
|
keym.remove((await ultroid_bot.get_entity(pat)).id) |
|
return await e.eor(f"Done, Removed {pat} To Night Mode.") |
|
except BaseException: |
|
return await e.eor(get_string("nightm_5"), time=5) |
|
keym.remove(e.chat_id) |
|
await e.eor(get_string("nightm_4")) |
|
|
|
|
|
@ultroid_cmd(pattern="listnm$") |
|
async def rem_grp(e): |
|
chats = keym.get() |
|
name = "NightMode Groups Are-:\n\n" |
|
for x in chats: |
|
try: |
|
ok = await ultroid_bot.get_entity(x) |
|
name += f"@{ok.username}" if ok.username else ok.title |
|
except BaseException: |
|
name += str(x) |
|
await e.eor(name) |
|
|
|
|
|
async def open_grp(): |
|
for chat in keym.get(): |
|
try: |
|
await ultroid_bot( |
|
EditChatDefaultBannedRightsRequest( |
|
chat, |
|
banned_rights=ChatBannedRights( |
|
until_date=None, |
|
send_messages=False, |
|
send_media=False, |
|
send_stickers=False, |
|
send_gifs=False, |
|
send_games=False, |
|
send_inline=False, |
|
send_polls=False, |
|
), |
|
) |
|
) |
|
await ultroid_bot.send_message(chat, "**NightMode Off**\n\nGroup Opened 🥳.") |
|
except Exception as er: |
|
LOGS.info(er) |
|
|
|
|
|
async def close_grp(): |
|
__, _, h2, m2 = 0, 0, 7, 0 |
|
if udB.get_key("NIGHT_TIME"): |
|
_, __, h2, m2 = eval(udB.get_key("NIGHT_TIME")) |
|
for chat in keym.get(): |
|
try: |
|
await ultroid_bot( |
|
EditChatDefaultBannedRightsRequest( |
|
chat, |
|
banned_rights=ChatBannedRights( |
|
until_date=None, |
|
send_messages=True, |
|
), |
|
) |
|
) |
|
await ultroid_bot.send_message( |
|
chat, f"**NightMode : Group Closed**\n\nGroup Will Open At `{h2}:{m2}`" |
|
) |
|
except Exception as er: |
|
LOGS.info(er) |
|
|
|
|
|
if AsyncIOScheduler and keym.get(): |
|
try: |
|
h1, m1, h2, m2 = 0, 0, 7, 0 |
|
if udB.get_key("NIGHT_TIME"): |
|
h1, m1, h2, m2 = eval(udB.get_key("NIGHT_TIME")) |
|
sch = AsyncIOScheduler() |
|
sch.add_job(close_grp, trigger="cron", hour=h1, minute=m1) |
|
sch.add_job(open_grp, trigger="cron", hour=h2, minute=m2) |
|
sch.start() |
|
except Exception as er: |
|
LOGS.info(er) |
|
|