Spaces:
Sleeping
Sleeping
File size: 3,363 Bytes
ca4eb6d 007891e c664d1d cddafb3 007891e cddafb3 007891e af1662b 007891e af1662b ca4eb6d af1662b c664d1d ca4eb6d af1662b ca4eb6d af1662b ca4eb6d 5e236e7 ca4eb6d 7ef725a 0357623 ca4eb6d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
from threading import RLock
from Powers.vars import Config
from aiohttp import ClientSession
from pyrogram.raw.all import layer
from Powers.database import MongoDB
from platform import python_version
from Powers.plugins import all_plugins
from time import time, gmtime, strftime
from pyrogram import Client, __version__
from Powers import (
API_ID, LOGGER, UPTIME, LOGFILE, NO_LOAD, WORKERS, API_HASH, BOT_TOKEN,
LOG_DATETIME, MESSAGE_DUMP, load_cmds)
INITIAL_LOCK = RLock()
# Check if MESSAGE_DUMP is correct
if MESSAGE_DUMP == -100 or not str(MESSAGE_DUMP).startswith("-100"):
raise Exception(
"Please enter a vaild Supergroup ID, A Supergroup ID starts with -100",
)
aiohttpsession = ClientSession()
class Gojo(Client):
"""Starts the Pyrogram Client on the Bot Token when we do 'python3 -m Powers'"""
def __init__(self):
# name = Powers
super().__init__(
"Gojo_Satarou",
bot_token=BOT_TOKEN,
plugins=dict(root="Powers.plugins", exclude=NO_LOAD),
api_id=API_ID,
api_hash=API_HASH,
workers=WORKERS,
)
async def start(self):
"""Start the bot."""
await super().start()
meh = await self.get_me() # Get bot info from pyrogram client
LOGGER.info("Starting bot...")
Config.BOT_ID = meh.id
Config.BOT_NAME = meh.first_name
Config.BOT_USERNAME = meh.username
startmsg = await self.send_message(MESSAGE_DUMP, "<i>Starting Bot...</i>")
# Show in Log that bot has started
LOGGER.info(
f"Pyrogram v{__version__} (Layer - {layer}) started on {meh.username}",
)
LOGGER.info(f"Python Version: {python_version()}\n")
# Get cmds and keys
cmd_list = await load_cmds(await all_plugins())
LOGGER.info(f"Plugins Loaded: {cmd_list}")
# Send a message to MESSAGE_DUMP telling that the
# bot has started and has loaded all plugins!
await startmsg.edit_text(
(
f"<b><i>@{meh.username} started on Pyrogram v{__version__} (Layer - {layer})</i></b>\n"
f"\n<b>Python:</b> <u>{python_version()}</u>\n"
"\n<b>Loaded Plugins:</b>\n"
f"<i>{cmd_list}</i>\n"
),
)
LOGGER.info("Bot Started Successfully!\n")
async def stop(self):
"""Stop the bot and send a message to MESSAGE_DUMP telling that the bot has stopped."""
runtime = strftime("%Hh %Mm %Ss", gmtime(time() - UPTIME))
LOGGER.info("Uploading logs before stopping...!\n")
# Send Logs to MESSAGE_DUMP and LOG_CHANNEL
await self.send_document(
MESSAGE_DUMP,
document=LOGFILE,
caption=(
"Bot Stopped!\n\n" f"Uptime: {runtime}\n" f"<code>{LOG_DATETIME}</code>"
),
)
if MESSAGE_DUMP:
# LOG_CHANNEL is not necessary
await self.send_document(
MESSAGE_DUMP,
document=LOGFILE,
caption=f"Uptime: {runtime}",
)
await super().stop()
MongoDB.close()
LOGGER.info(
f"""Bot Stopped.
Logs have been uploaded to the MESSAGE_DUMP Group!
Runtime: {runtime}s\n
""",
)
|