import logging from os import getpid from time import time import pyrogram from libbot import config_get from pyrogram.client import Client from pyrogram.errors import BadRequest from pyrogram.raw.all import layer from ujson import loads logger = logging.getLogger(__name__) class PyroClient(Client): def __init__(self): with open("config.json", "r", encoding="utf-8") as f: config = loads(f.read()) super().__init__( name="bot_client", api_id=config["bot"]["api_id"], api_hash=config["bot"]["api_hash"], bot_token=config["bot"]["bot_token"], workers=config["bot"]["workers"], plugins=dict(root="plugins", exclude=config["disabled_plugins"]), sleep_threshold=120, ) async def start(self): await super().start() self.start_time = time() logger.info( "Bot is running with Pyrogram v%s (Layer %s) and has started as @%s on PID %s.", pyrogram.__version__, layer, self.me.username, getpid(), ) try: await self.send_message( chat_id=await config_get("chat_id", "reports"), text=f"Bot started PID `{getpid()}`", ) except BadRequest: logger.warning("Unable to send message to report chat.") async def stop(self): try: await self.send_message( chat_id=await config_get("chat_id", "reports"), text=f"Bot stopped with PID `{getpid()}`", ) except BadRequest: logger.warning("Unable to send message to report chat.") await super().stop() logger.warning(f"Bot stopped with PID {getpid()}.")