Spaces:
Sleeping
Sleeping
File size: 3,908 Bytes
11ae35a f0f9ad9 f192ee1 11ae35a f0f9ad9 48f18b6 11ae35a 83fe5dc f0f9ad9 ea508b7 11ae35a ca4eb6d af1662b ca4eb6d af1662b ca4eb6d bd54dc6 ca4eb6d 7ef725a 0357623 ca4eb6d 061b0de ca4eb6d 58c2385 48f18b6 51e1c40 48f18b6 aef1161 51e1c40 48f18b6 ca4eb6d ea508b7 6dcea66 83fe5dc ca4eb6d ea508b7 51e1c40 6cef7ec ea508b7 ca4eb6d f192ee1 ca4eb6d f192ee1 89ad488 ca4eb6d f192ee1 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 105 106 107 108 109 110 |
from platform import python_version
from threading import RLock
from time import gmtime, strftime
from time import time as t
from pyrogram import Client, __version__
from pyrogram.raw.all import layer
from pyrogram.types import BotCommand
from Powers import (API_HASH, API_ID, BOT_TOKEN, LOG_DATETIME, LOGFILE, LOGGER,
MESSAGE_DUMP, NO_LOAD, UPTIME, WORKERS, load_cmds,
scheduler)
from Powers.database import MongoDB
from Powers.plugins import all_plugins
from Powers.plugins.scheduled_jobs import *
from Powers.supports import *
from Powers.vars import Config
INITIAL_LOCK = RLock()
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_Satoru",
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, use_qr=False, except_ids=[]):
"""Start the bot."""
await super().start(use_qr=use_qr, except_ids=except_ids)
await self.set_bot_commands(
[
BotCommand(
"start", "To check weather the bot is alive or not"),
BotCommand("help", "To get help menu"),
BotCommand("donate", "To buy me a coffee"),
BotCommand("bug", "To report bugs")
]
)
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())
await load_support_users()
await cache_support()
LOGGER.info(f"Dev Users: {SUPPORT_USERS['Dev']}")
LOGGER.info(f"Sudo Users: {SUPPORT_USERS['Sudo']}")
LOGGER.info(f"Whitelist users: {SUPPORT_USERS['White']}")
LOGGER.info(f"Plugins Loaded: {cmd_list}")
if BDB_URI:
scheduler.add_job(send_wishish, 'cron', [
self], hour=0, minute=0, second=0)
scheduler.start()
# 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(t() - UPTIME))
LOGGER.info("Uploading logs before stopping...!\n")
# Send Logs to MESSAGE_DUMP and LOG_CHANNEL
scheduler.remove_all_jobs()
target = MESSAGE_DUMP or OWNER_ID
await self.send_document(
target,
document=LOGFILE,
caption=(
"Bot Stopped!\n\n" f"Uptime: {runtime}\n" f"<code>{LOG_DATETIME}</code>"
),
)
await super().stop()
MongoDB.close()
LOGGER.info(
f"""Bot Stopped.
Logs have been uploaded to the MESSAGE_DUMP Group!
Runtime: {runtime}s\n
""",
)
|