2023-05-16 21:50:18 +03:00
|
|
|
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
|
2023-05-16 21:53:59 +03:00
|
|
|
from pyrogram.types import BotCommand, BotCommandScopeChat
|
2023-05-16 21:50:18 +03:00
|
|
|
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="bwtbot",
|
|
|
|
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.")
|
|
|
|
|
2023-05-16 21:53:59 +03:00
|
|
|
await self.set_bot_commands(
|
|
|
|
[
|
|
|
|
BotCommand("help", "Меню допомоги"),
|
|
|
|
BotCommand("balance", "Баланс картки"),
|
|
|
|
BotCommand("topup", "Поповнити картку"),
|
|
|
|
BotCommand("setcard", "Прив'язати картку"),
|
|
|
|
BotCommand("resetcard", "Відв'язати картку"),
|
|
|
|
],
|
|
|
|
language_code="uk",
|
|
|
|
)
|
|
|
|
|
|
|
|
await self.set_bot_commands(
|
|
|
|
[
|
|
|
|
BotCommand("help", "Меню допомоги"),
|
|
|
|
BotCommand("balance", "Баланс картки"),
|
|
|
|
BotCommand("topup", "Поповнити картку"),
|
|
|
|
BotCommand("setcard", "Прив'язати картку"),
|
|
|
|
BotCommand("resetcard", "Відв'язати картку"),
|
|
|
|
],
|
|
|
|
language_code="ru",
|
|
|
|
)
|
|
|
|
|
|
|
|
await self.set_bot_commands(
|
|
|
|
[
|
|
|
|
BotCommand("help", "Help menu"),
|
|
|
|
BotCommand("balance", "Card's balance"),
|
|
|
|
BotCommand("topup", "Refill card"),
|
|
|
|
BotCommand("setcard", "Link card"),
|
|
|
|
BotCommand("resetcard", "Unlink card"),
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
await self.set_bot_commands(
|
|
|
|
[
|
|
|
|
BotCommand("help", "Help menu"),
|
|
|
|
BotCommand("balance", "Card's balance"),
|
|
|
|
BotCommand("topup", "Refill card"),
|
|
|
|
BotCommand("setcard", "Link card"),
|
|
|
|
BotCommand("resetcard", "Unlink card"),
|
|
|
|
BotCommand("shutdown", "Turn off the bot"),
|
|
|
|
],
|
|
|
|
scope=BotCommandScopeChat(chat_id=await config_get("owner_id")),
|
|
|
|
)
|
|
|
|
|
2023-05-16 21:50:18 +03:00
|
|
|
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()}.")
|