Spaces:
Paused
Paused
| # Ultroid - UserBot | |
| # Copyright (C) 2021-2025 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/>. | |
| """ | |
| ✘ 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) | |
| 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")) | |
| 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")) | |
| 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")) | |
| 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) | |