File size: 3,855 Bytes
db78256 |
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 111 112 113 114 115 116 117 118 119 120 121 122 |
from sys import exit
from importlib import import_module
from logging import (
FileHandler,
StreamHandler,
INFO,
basicConfig,
error as log_error,
info as log_info,
getLogger,
ERROR,
)
from os import path, remove, environ
from pymongo.mongo_client import MongoClient
from pymongo.server_api import ServerApi
from subprocess import run as srun, call as scall
getLogger("pymongo").setLevel(ERROR)
var_list = [
"BOT_TOKEN",
"TELEGRAM_API",
"TELEGRAM_HASH",
"OWNER_ID",
"DATABASE_URL",
"BASE_URL",
"UPSTREAM_REPO",
"UPSTREAM_BRANCH",
"UPDATE_PKGS",
]
if path.exists("log.txt"):
with open("log.txt", "r+") as f:
f.truncate(0)
if path.exists("rlog.txt"):
remove("rlog.txt")
basicConfig(
format="[%(asctime)s] [%(levelname)s] - %(message)s",
datefmt="%d-%b-%y %I:%M:%S %p",
handlers=[FileHandler("log.txt"), StreamHandler()],
level=INFO,
)
try:
settings = import_module("config")
config_file = {
key: value.strip() if isinstance(value, str) else value
for key, value in vars(settings).items()
if not key.startswith("__")
}
except ModuleNotFoundError:
log_info("Config.py file is not Added! Checking ENVs..")
config_file = {}
env_updates = {
key: value.strip() if isinstance(value, str) else value
for key, value in environ.items()
if key in var_list
}
if env_updates:
log_info("Config data is updated with ENVs!")
config_file.update(env_updates)
BOT_TOKEN = config_file.get("BOT_TOKEN", "")
if not BOT_TOKEN:
log_error("BOT_TOKEN variable is missing! Exiting now")
exit(1)
BOT_ID = BOT_TOKEN.split(":", 1)[0]
if DATABASE_URL := config_file.get("DATABASE_URL", "").strip():
try:
conn = MongoClient(DATABASE_URL, server_api=ServerApi("1"))
db = conn.wzmlx
old_config = db.settings.deployConfig.find_one({"_id": BOT_ID}, {"_id": 0})
config_dict = db.settings.config.find_one({"_id": BOT_ID})
if (
old_config is not None and old_config == config_file or old_config is None
) and config_dict is not None:
config_file["UPSTREAM_REPO"] = config_dict["UPSTREAM_REPO"]
config_file["UPSTREAM_BRANCH"] = config_dict.get("UPSTREAM_BRANCH", "wzv3")
config_file["UPDATE_PKGS"] = config_dict.get("UPDATE_PKGS", "True")
conn.close()
except Exception as e:
log_error(f"Database ERROR: {e}")
UPSTREAM_REPO = config_file.get("UPSTREAM_REPO", "").strip()
UPSTREAM_BRANCH = config_file.get("UPSTREAM_BRANCH", "").strip() or "wzv3"
if UPSTREAM_REPO:
if path.exists(".git"):
srun(["rm", "-rf", ".git"])
update = srun(
[
f"git init -q \
&& git config --global user.email 105407900+SilentDemonSD@users.noreply.github.com \
&& git config --global user.name SilentDemonSD \
&& git add . \
&& git commit -sm update -q \
&& git remote add origin {UPSTREAM_REPO} \
&& git fetch origin -q \
&& git reset --hard origin/{UPSTREAM_BRANCH} -q"
],
shell=True,
)
repo = UPSTREAM_REPO.split("/")
UPSTREAM_REPO = f"https://github.com/{repo[-2]}/{repo[-1]}"
if update.returncode == 0:
log_info("Successfully updated with Latest Updates !")
else:
log_error("Something went Wrong ! Recheck your details or Ask Support !")
log_info(f"UPSTREAM_REPO: {UPSTREAM_REPO} | UPSTREAM_BRANCH: {UPSTREAM_BRANCH}")
UPDATE_PKGS = config_file.get("UPDATE_PKGS", "True")
if (isinstance(UPDATE_PKGS, str) and UPDATE_PKGS.lower() == "true") or UPDATE_PKGS:
scall("uv pip install -U -r requirements.txt", shell=True)
log_info("Successfully Updated all the Packages !")
|