Files
Ultroid-fork/pyUltroid/startup/loader.py
Devesh Pal d8bd901072 Ultroid v0.7 Updates
Date: 30-8-2022
Co-Authored-By: Aditya <me@xditya.me>
Co-Authored-By: Amit Sharma <48654350+buddhhu@users.noreply.github.com>
Co-Authored-By: CyrusXD <79554993+Ashutosh1478@users.noreply.github.com>
Co-Authored-By: Danish <danish@ultroid.tech>
Co-Authored-By: TechiError <error@notavailable.live>
Co-Authored-By: Arnab Paryali <arnabxd@pm.me>
2022-08-30 16:05:58 +05:30

129 lines
4.4 KiB
Python

# Ultroid - UserBot
# Copyright (C) 2021-2022 TeamUltroid
#
# This file is a part of < https://github.com/TeamUltroid/Ultroid/ >
# PLease read the GNU Affero General Public License in
# <https://github.com/TeamUltroid/pyUltroid/blob/main/LICENSE>.
import os
from shutil import rmtree
from decouple import config
from git import Repo
from .. import *
from ..dB._core import HELP
from ..loader import Loader
from . import *
from .utils import load_addons
def _after_load(loader, module, plugin_name=""):
if not module or plugin_name.startswith("_"):
return
from strings import get_help
if doc_ := get_help(plugin_name) or module.__doc__:
try:
doc = doc_.format(i=HNDLR)
except Exception as er:
loader._logger.exception(er)
return
if loader.key in HELP.keys():
update_cmd = HELP[loader.key]
try:
update_cmd.update({plugin_name: doc})
except BaseException as er:
loader._logger.exception(er)
else:
try:
HELP.update({loader.key: {plugin_name: doc}})
except BaseException as em:
loader._logger.exception(em)
def load_other_plugins(addons=None, pmbot=None, manager=None, vcbot=None):
# for official
_exclude = udB.get_key("EXCLUDE_OFFICIAL") or config("EXCLUDE_OFFICIAL", None)
_exclude = _exclude.split() if _exclude else []
# "INCLUDE_ONLY" was added to reduce Big List in "EXCLUDE_OFFICIAL" Plugin
_in_only = udB.get_key("INCLUDE_ONLY") or config("INCLUDE_ONLY", None)
_in_only = _in_only.split() if _in_only else []
Loader().load(include=_in_only, exclude=_exclude, after_load=_after_load)
# for assistant
if not udB.get_key("DISABLE_AST_PLUGINS"):
_ast_exc = ["pmbot"]
if _in_only and "games" not in _in_only:
_ast_exc.append("games")
Loader(path="assistant").load(
log=False, exclude=_ast_exc, after_load=_after_load
)
# for addons
if addons:
if url := udB.get_key("ADDONS_URL"):
os.system(f"git clone -q {url} addons")
if os.path.exists("addons") and not os.path.exists("addons/.git"):
rmtree("addons")
if not os.path.exists("addons"):
os.system(
f"git clone -q -b {Repo().active_branch} https://github.com/TeamUltroid/UltroidAddons.git addons"
)
else:
os.system("cd addons && git pull -q && cd ..")
if not os.path.exists("addons"):
os.system(
"git clone -q https://github.com/TeamUltroid/UltroidAddons.git addons"
)
if os.path.exists("addons/addons.txt"):
# generally addons req already there so it won't take much time
os.system(
"rm -rf /usr/local/lib/python3.9/site-packages/pip/_vendor/.wh.appdirs.py"
)
os.system("pip3 install --no-cache-dir -q -r ./addons/addons.txt")
_exclude = udB.get_key("EXCLUDE_ADDONS")
_exclude = _exclude.split() if _exclude else []
_in_only = udB.get_key("INCLUDE_ADDONS")
_in_only = _in_only.split() if _in_only else []
Loader(path="addons", key="Addons").load(
func=load_addons,
include=_in_only,
exclude=_exclude,
after_load=_after_load,
load_all=True,
)
# group manager
if manager:
Loader(path="assistant/manager", key="Group Manager").load()
# chat via assistant
if pmbot:
Loader(path="assistant/pmbot.py").load_single(log=False)
# vc bot
if vcbot and not vcClient._bot:
try:
import pytgcalls # ignore: pylint
if os.path.exists("vcbot"):
if os.path.exists("vcbot/.git"):
os.system("cd vcbot && git pull")
else:
rmtree("vcbot")
if not os.path.exists("vcbot"):
os.system("git clone https://github.com/TeamUltroid/VcBot vcbot")
try:
if not os.path.exists("vcbot/downloads"):
os.mkdir("vcbot/downloads")
Loader(path="vcbot", key="VCBot").load(after_load=_after_load)
except FileNotFoundError as e:
LOGS.error(f"{e} Skipping VCBot Installation.")
except ModuleNotFoundError:
LOGS.error("'pytgcalls' not installed!\nSkipping load of VcBot.")