Telegram/holochecker.py

124 lines
4.0 KiB
Python

from os import getpid, makedirs
from time import time
from modules.utils import *
from modules.inline import *
from app import app
from pyrogram import idle
pid = getpid()
makedirs(f'{configGet("cache", "locations")}{sep}avatars', exist_ok=True)
# Importing
from modules.commands.application import *
from modules.commands.bye import *
from modules.commands.cancel import *
from modules.commands.export import *
from modules.commands.identify import *
from modules.commands.issue import *
from modules.commands.label import *
from modules.commands.message import *
from modules.commands.nearby import *
from modules.commands.reapply import *
from modules.commands.reboot import *
from modules.commands.resetcommands import *
from modules.commands.rules import *
from modules.commands.spoiler import *
from modules.commands.sponsorship import *
from modules.commands.start import *
from modules.commands.warn import *
from modules.commands.warnings import *
# This one is only imported during events
# and should be completely rewritten for each one.
# from modules.event import *
from modules.callbacks.ban import *
from modules.callbacks.nothing import *
from modules.callbacks.reapply import *
from modules.callbacks.rules import *
from modules.callbacks.spoiler import *
from modules.callbacks.sponsorship import *
from modules.callbacks.sub import *
from modules.callbacks.sus import *
from modules.callbacks.warnings import *
from modules.handlers.analytics_group import *
from modules.handlers.confirmation import *
from modules.handlers.contact import *
from modules.handlers.group_member_update import *
from modules.handlers.voice import *
from modules.handlers.welcome import *
from modules.handlers.everything import *
from modules.scheduled import *
if __name__ == "__main__":
logWrite(f"Starting up with pid {pid}")
# Yes, it should be in some kind of async main() function but I don't give a shit.
# I did compare performance, almost no difference and it's much more useful this way. Change my mind.
app.start()
try:
if path.exists(path.join(configGet("cache", "locations"), "shutdown_time")):
downtime = relativedelta(
datetime.now(),
datetime.fromtimestamp(
jsonLoad(
path.join(configGet("cache", "locations"), "shutdown_time")
)["timestamp"]
),
)
if downtime.days >= 1:
app.send_message(
configGet("owner"),
locale("startup_downtime_days", "message").format(
pid, downtime.days
),
)
elif downtime.hours >= 1:
app.send_message(
configGet("owner"),
locale("startup_downtime_hours", "message").format(
pid, downtime.hours
),
)
else:
app.send_message(
configGet("owner"),
locale("startup_downtime_minutes", "message").format(
pid, downtime.minutes
),
)
else:
app.send_message(
configGet("owner"), locale("startup", "message").format(pid)
)
except bad_request_400.PeerIdInvalid:
logWrite(
f"Could not send startup message to bot owner. Perhaps user has not started the bot yet."
)
scheduler.start()
idle()
try:
app.send_message(configGet("owner"), locale("shutdown", "message").format(pid))
except bad_request_400.PeerIdInvalid:
logWrite(
f"Could not send shutdown message to bot owner. Perhaps user has not started the bot yet."
)
app.stop()
makedirs(configGet("cache", "locations"), exist_ok=True)
jsonSave(
{"timestamp": time()},
path.join(configGet("cache", "locations"), "shutdown_time"),
)
killProc(pid)