This commit is contained in:
yasir 2023-02-16 16:36:40 +07:00
parent 6b8acd2351
commit e162b443db
2 changed files with 61 additions and 227 deletions

View file

@ -1,209 +0,0 @@
# Auto Close and Open Group, I dont have time to add Database Support
import traceback
from datetime import datetime
import pytz
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from pyrogram import Client, __version__, filters
from pyrogram.types import (
CallbackQuery,
ChatPermissions,
InlineKeyboardButton,
InlineKeyboardMarkup,
)
from misskaty import BOT_USERNAME, app
from misskaty.core.decorator.ratelimiter import ratelimiter
from misskaty.vars import LOG_CHANNEL, NIGHTMODE
# Check calculate how long it will take to Ramadhan
def puasa():
now = datetime.now(pytz.timezone("Asia/Jakarta"))
tahun = now.strftime("%Y")
bulan = now.strftime("%m")
tgl = now.strftime("%d")
jam = now.strftime("%H")
menit = now.strftime("%M")
detik = now.strftime("%S")
x = datetime(int(tahun), int(bulan), int(tgl), int(jam), int(menit), int(detik))
y = datetime(2022, 4, 2, 0, 0, 0)
return y - x
async def job_close():
now = datetime.now(pytz.timezone("Asia/Jakarta"))
days = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"]
month = [
"Unknown",
"Januari",
"Februari",
"Maret",
"April",
"Mei",
"Juni",
"Juli",
"Agustus",
"September",
"Oktober",
"November",
"Desember",
]
tgl = now.strftime("%d")
tahun = now.strftime("%Y")
jam = now.strftime("%H:%M")
try:
reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton(text="❤️", callback_data="nightmd")]])
await app.set_chat_permissions(
-1001128045651,
ChatPermissions(can_send_messages=False, can_invite_users=True),
)
await app.send_message(
-1001128045651,
f"📆 {days[now.weekday()]}, {tgl} {month[now.month]} {tahun}\n⏰ Jam : {jam}\n\n**🌗 Mode Malam Aktif**\n`Grup ditutup dan semua member tidak akan bisa mengirim pesan. Selamat beristirahat dan bermimpi indah !!`",
reply_markup=reply_markup,
)
except Exception:
exc = traceback.format_exc()
await app.send_message(LOG_CHANNEL, f"ERROR:\n<code>{exc}</code>")
async def job_close_ymoviez():
now = datetime.now(pytz.timezone("Asia/Jakarta"))
days = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"]
month = [
"Unknown",
"Januari",
"Februari",
"Maret",
"April",
"Mei",
"Juni",
"Juli",
"Agustus",
"September",
"Oktober",
"November",
"Desember",
]
tgl = now.strftime("%d")
tahun = now.strftime("%Y")
jam = now.strftime("%H:%M")
try:
reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton(text="❤️", callback_data="nightmd")]])
await app.set_chat_permissions(
-1001255283935,
ChatPermissions(can_send_messages=False, can_invite_users=True),
)
await app.send_message(
-1001255283935,
f"📆 {days[now.weekday()]}, {tgl} {month[now.month]} {tahun}\n⏰ Jam : {jam}\n\n**🌗 Mode Malam Aktif**\n`Grup ditutup hingga jam 9 pagi. Selamat beristirahat.....`",
)
except Exception:
exc = traceback.format_exc()
await app.send_message(LOG_CHANNEL, f"ERROR:\n<code>{exc}</code>")
async def job_open():
now = datetime.now(pytz.timezone("Asia/Jakarta"))
days = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"]
month = [
"Unknown",
"Januari",
"Februari",
"Maret",
"April",
"Mei",
"Juni",
"Juli",
"Agustus",
"September",
"Oktober",
"November",
"Desember",
]
tgl = now.strftime("%d")
tahun = now.strftime("%Y")
jam = now.strftime("%H:%M")
try:
reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton(text="❤️", callback_data="nightmd")]])
await app.set_chat_permissions(
-1001128045651,
ChatPermissions(
can_send_messages=True,
can_send_media_messages=True,
can_invite_users=True,
can_add_web_page_previews=True,
can_send_other_messages=False,
),
)
await app.send_message(
-1001128045651,
f"📆 {days[now.weekday()]}, {tgl} {month[now.month]} {tahun}\n{jam}`\n\n🌗 Mode Malam Selesai\nSelamat pagi, grup kini telah dibuka semoga hari-harimu menyenangkan.`",
reply_markup=reply_markup,
)
except Exception:
exc = traceback.format_exc()
await app.send_message(LOG_CHANNEL, f"ERROR:\n<code>{exc}</code>")
async def job_open_ymoviez():
now = datetime.now(pytz.timezone("Asia/Jakarta"))
days = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"]
month = [
"Unknown",
"Januari",
"Februari",
"Maret",
"April",
"Mei",
"Juni",
"Juli",
"Agustus",
"September",
"Oktober",
"November",
"Desember",
]
tgl = now.strftime("%d")
tahun = now.strftime("%Y")
jam = now.strftime("%H:%M")
try:
reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton(text="❤️", callback_data="nightmd")]])
await app.set_chat_permissions(
-1001255283935,
ChatPermissions(
can_send_messages=True,
can_send_media_messages=True,
can_invite_users=True,
can_add_web_page_previews=True,
can_send_other_messages=True,
),
)
await app.send_message(
-1001255283935,
f"📆 {days[now.weekday()]}, {tgl} {month[now.month]} {tahun}\n{jam}`\n\n🌗 Mode Malam Selesai\nSelamat pagi, grup kini telah dibuka semoga hari-harimu menyenangkan.`",
reply_markup=reply_markup,
)
except Exception:
exc = traceback.format_exc()
await app.send_message(LOG_CHANNEL, f"ERROR:\n<code>{exc}</code>")
@app.on_callback_query(filters.regex(r"^nightmd$"))
@ratelimiter
async def callbackanightmd(c: Client, q: CallbackQuery):
await q.answer(
f"🔖 Hai, Aku {BOT_USERNAME} dibuat menggunakan Framework Pyrogram v{__version__} dan Python 3.10.\n\nMau buat bot seperti ini? Yuuk belajar di @botindonesia\nOwner: @YasirArisM",
show_alert=True,
cache_time=2160,
)
scheduler = AsyncIOScheduler(timezone="Asia/Jakarta")
if NIGHTMODE:
scheduler.add_job(job_close, trigger="cron", hour=22, minute=0)
# scheduler.add_job(job_close_ymoviez, trigger="cron", hour=22, minute=0)
scheduler.add_job(job_open, trigger="cron", hour=6, minute=0)
# scheduler.add_job(job_open_ymoviez, trigger="cron", hour=10, minute=0)
scheduler.start()

View file

@ -4,14 +4,15 @@ from datetime import datetime, timedelta
import pytz
from apscheduler.jobstores.base import ConflictingIdError
from pyrogram import filters
from pyrogram import filters, __version__
from pyrogram.errors import (ChannelInvalid, ChannelPrivate, ChatAdminRequired,
ChatNotModified)
from pyrogram.types import ChatPermissions
from pyrogram.types import ChatPermissions, InlineKeyboardButton, InlineKeyboardMarkup
from database.nightmode_db import TZ, scheduler
from misskaty import BOT_NAME, app
from misskaty import BOT_NAME, BOT_USERNAME, app
from misskaty.core.message_utils import *
from misskaty.core.decorator.ratelimiter import ratelimiter
from misskaty.core.decorator.permissions import adminsOnly
from misskaty.vars import COMMAND_HANDLER, LOG_CHANNEL
@ -29,6 +30,43 @@ __HELP__ = """<b>Enable or disable nightmode (locks the chat at specified interv
"""
TIME_ZONE = pytz.timezone(TZ)
reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton(text="❤️", callback_data="nightmd")]])
# Check calculate how long it will take to Ramadhan
def puasa():
now = datetime.now(pytz.timezone("Asia/Jakarta"))
tahun = now.strftime("%Y")
bulan = now.strftime("%m")
tgl = now.strftime("%d")
jam = now.strftime("%H")
menit = now.strftime("%M")
detik = now.strftime("%S")
x = datetime(int(tahun), int(bulan), int(tgl), int(jam), int(menit), int(detik))
y = datetime(2022, 4, 2, 0, 0, 0)
return y - x
def tglsekarang():
now = datetime.now(pytz.timezone("Asia/Jakarta"))
days = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"]
month = [
"Unknown",
"Januari",
"Februari",
"Maret",
"April",
"Mei",
"Juni",
"Juli",
"Agustus",
"September",
"Oktober",
"November",
"Desember",
]
tgl = now.strftime("%d")
tahun = now.strftime("%Y")
jam = now.strftime("%H:%M")
return f"{days[now.weekday()]}, {tgl} {month[now.month]} {tahun}"
def extract_time(time_val: str):
if any(time_val.endswith(unit) for unit in ('m', 'h')):
@ -51,14 +89,14 @@ async def un_mute_chat(chat_id: int, perm: ChatPermissions):
except ChatAdminRequired:
await app.send_message(
LOG_CHANNEL,
f"#NIGHT_MODE_FAIL\nFailed to turn off nightmode at `{chat_id}`,"
f"#NIGHTMODE_FAIL\nFailed to turn off nightmode at `{chat_id}`,"
f"since {BOT_NAME} is not an admin in chat `{chat_id}`")
except (ChannelInvalid, ChannelPrivate):
scheduler.remove_job(f"enable_nightmode_{chat_id}")
scheduler.remove_job(f"disable_nightmode_{chat_id}")
await app.send_message(
LOG_CHANNEL,
f"#NIGHT_MODE_FAIL\nFailed to turn off nightmode at `{chat_id}`,"
f"#NIGHTMODE_FAIL\nFailed to turn off nightmode at `{chat_id}`,"
f"since {BOT_NAME} is not present in chat `{chat_id}`"
" Removed group from list.")
except ChatNotModified:
@ -66,18 +104,16 @@ async def un_mute_chat(chat_id: int, perm: ChatPermissions):
except Exception as e:
await app.send_message(
LOG_CHANNEL,
f"#NIGHT_MODE_FAIL\nFailed to turn off nightmode at `{chat_id}`\n"
f"#NIGHTMODE_FAIL\nFailed to turn off nightmode at `{chat_id}`\n"
f"ERROR: `{e}`")
else:
job = scheduler.get_job(f"enable_nightmode_{chat_id}")
close_at = job.next_run_time
await app.send_message(
chat_id,
f"#AUTOMATED_HANDLER\nGroup is Opening.\nWill be closed at {close_at}")
await app.send_message(
LOG_CHANNEL,
f"#NIGHT_MODE_SUCCESS\nSuccessfully turned off nightmode at `{chat_id}`,")
f"#NIGHTMODE_HANDLER\n📆 {tglsekarang()}\n\n☀️ Group is Opening.\nWill be closed at {close_at}",
reply_markup=reply_markup
)
async def mute_chat(chat_id: int):
try:
@ -85,14 +121,14 @@ async def mute_chat(chat_id: int):
except ChatAdminRequired:
await app.send_message(
LOG_CHANNEL,
f"#NIGHT_MODE_FAIL\nFailed to enable nightmode at `{chat_id}`,"
f"#NIGHTMODE_FAIL\nFailed to enable nightmode at `{chat_id}`,"
f"since {BOT_NAME} is not an admin in chat `{chat_id}`")
except (ChannelInvalid, ChannelPrivate):
scheduler.remove_job(f"enable_nightmode_{chat_id}")
scheduler.remove_job(f"disable_nightmode_{chat_id}")
await app.send_message(
LOG_CHANNEL,
f"#NIGHT_MODE_FAIL\nFailed to enable nightmode at `{chat_id}`,"
f"#NIGHTMODE_FAIL\nFailed to enable nightmode at `{chat_id}`,"
f"since {BOT_NAME} is not present in chat `{chat_id}`"
" Removed group from list.")
except ChatNotModified:
@ -100,17 +136,16 @@ async def mute_chat(chat_id: int):
except Exception as e:
await app.send_message(
LOG_CHANNEL,
f"#NIGHT_MODE_FAIL\nFailed to enable nightmode at `{chat_id}`\n"
f"#NIGHTMODE_FAIL\nFailed to enable nightmode at `{chat_id}`\n"
f"ERROR: `{e}`")
else:
job = scheduler.get_job(f"disable_nightmode_{chat_id}")
open_at = job.next_run_time
await app.send_message(
chat_id,
f"#AUTOMATED_HANDLER\nGroup is closing.\nWill be opened at {open_at}")
await app.send_message(
LOG_CHANNEL,
f"#NIGHT_MODE_SUCCESS\nSuccessfully turned on nightmode at `{chat_id}`,")
f"#NIGHTMODE_HANDLER\n📆 {tglsekarang()}\n\n🌗 Group is closing.\nWill be opened at {open_at}",
reply_markup=reply_markup
)
@app.on_message(filters.command("nightmode", COMMAND_HANDLER) & filters.group)
@adminsOnly("can_change_info")
@ -186,5 +221,13 @@ async def nightmode_handler(c, msg):
if not bool(scheduler.state):
scheduler.start()
@app.on_callback_query(filters.regex(r"^nightmd$"))
@ratelimiter
async def callbackanightmd(c, q):
await q.answer(
f"🔖 Hai, Aku {BOT_USERNAME} dibuat menggunakan Framework Pyrogram v{__version__} dan Python 3.10.\n\nMau buat bot seperti ini? Yuuk belajar di @botindonesia\nOwner: @YasirArisM",
show_alert=True
)
if bool(scheduler.get_jobs()):
scheduler.start()