2023-03-20 14:55:42 +02:00
from os import getpid , makedirs , path
from time import time
2023-02-14 12:38:54 +02:00
2023-01-10 13:52:44 +02:00
from pyrogram import filters
2023-03-20 14:55:42 +02:00
from pyrogram . types import Message , InlineKeyboardMarkup , InlineKeyboardButton
2023-02-14 12:38:54 +02:00
2023-03-20 14:55:42 +02:00
from classes . poster_client import PosterClient
from modules . app import app , users_with_context
2023-01-17 12:43:10 +02:00
from modules . logger import logWrite
2023-03-20 14:55:42 +02:00
from modules . scheduler import scheduler
from modules . utils import configGet , jsonSave , locale
2023-01-10 13:52:44 +02:00
2023-02-14 12:38:54 +02:00
2023-03-20 14:55:42 +02:00
@app.on_message ( ~ filters . scheduled & filters . command ( [ " shutdown " ] , prefixes = [ " " , " / " ] ) )
2023-02-17 17:46:33 +02:00
async def cmd_kill ( app : PosterClient , msg : Message ) :
2023-02-17 22:55:38 +02:00
if msg . from_user . id in app . admins :
2023-03-20 14:55:42 +02:00
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
2023-01-10 13:52:44 +02:00
pid = getpid ( )
2023-03-20 14:55:42 +02:00
logWrite ( f " Shutting down bot with pid { pid } " )
2023-03-09 12:33:02 +02:00
await msg . reply_text (
2023-03-20 14:55:42 +02:00
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 " ) ,
2023-03-09 12:33:02 +02:00
)
2023-03-20 14:55:42 +02:00
exit ( )