46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
from os import getpid, makedirs, path
|
|
from time import time
|
|
|
|
from pyrogram import filters
|
|
from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton
|
|
|
|
from classes.poster_client import PosterClient
|
|
from modules.app import app, users_with_context
|
|
from modules.logger import logWrite
|
|
from modules.scheduler import scheduler
|
|
from modules.utils import configGet, jsonSave, locale
|
|
|
|
|
|
@app.on_message(~filters.scheduled & filters.command(["shutdown"], prefixes=["", "/"]))
|
|
async def cmd_kill(app: PosterClient, msg: Message):
|
|
if msg.from_user.id in app.admins:
|
|
global users_with_context
|
|
if len(users_with_context) > 0:
|
|
await msg.reply_text(
|
|
f"There're {len(users_with_context)} unfinished users' contexts. If you turn off the bot, those will be lost. Please confirm shutdown using a button below.",
|
|
reply_markup=InlineKeyboardMarkup(
|
|
[
|
|
[
|
|
InlineKeyboardButton(
|
|
"Confirm shutdown", callback_data="shutdown"
|
|
)
|
|
]
|
|
]
|
|
),
|
|
)
|
|
return
|
|
pid = getpid()
|
|
logWrite(f"Shutting down bot with pid {pid}")
|
|
await msg.reply_text(
|
|
locale("shutdown", "message", locale=msg.from_user.language_code).format(
|
|
pid
|
|
),
|
|
)
|
|
scheduler.shutdown()
|
|
makedirs(configGet("cache", "locations"), exist_ok=True)
|
|
jsonSave(
|
|
{"timestamp": time()},
|
|
path.join(configGet("cache", "locations"), "shutdown_time"),
|
|
)
|
|
exit()
|