Serve/modules/control.py
2025-08-30 14:52:08 +02:00

69 lines
3.2 KiB
Python

from pathlib import Path
from os import system
import libminecraft
import libsignal
import libcommon
RetardsServer = libcommon.Group(
"Retards Server", "5PlbXaPmWZQkhmuyyC/fkWTy8K+BqomjK7byVDyxmpo=")
@libsignal.onMessage(RetardsServer)
def signalControl(usr: str, msg: str):
if usr == "Malasaur" and msg.startswith("!"):
match msg.split():
case ["!modules", "list"]:
available_modules, loaded_modules, unloaded_modules = libcommon.listModules()
libsignal.sendMessage(
f"""Available modules: {" ".join(available_modules)}
Loaded modules: {" ".join(loaded_modules)}
Unloaded modules: {" ".join(unloaded_modules)}""", RetardsServer
)
case ["!modules", "load", *modules]:
for module in modules:
try:
libcommon.loadModule(module)
libsignal.sendMessage(
f"'{module}' successfully loaded.", RetardsServer)
except Exception as e:
libsignal.sendMessage(
f"Error loading '{module}': {e}", RetardsServer)
case ["!modules", "unload", *modules]:
for module in modules:
try:
libcommon.unloadModule(module)
libsignal.sendMessage(
f"'{module}' successfully unloaded.", RetardsServer)
except Exception as e:
libsignal.sendMessage(
f"Error unloading '{module}': {e}", RetardsServer)
case ["!modules", "reload", *modules]:
for module in modules:
try:
libcommon.unloadModule(module)
libcommon.loadModule(module)
libsignal.sendMessage(
f"'{module}' successfully reloaded.", RetardsServer)
except Exception as e:
libsignal.sendMessage(
f"Error reloading '{module}': {e}", RetardsServer)
case ["!modules", "update"]:
system("git -C Serve pull")
log = []
modules = []
for file in Path("Serve", "modules").iterdir():
if file.name[:-3] in libcommon.listModules()[0]:
if file.read_text != Path("modules", file.name).read_text:
log.append(
f"Module '{file.name[:-3]}' has an available update.")
else:
log.append(f"New module added: '{file.name[:-3]}'.")
modules.append(file.name[:-3])
for module in libcommon.listModules()[0]:
if module not in modules:
log.append(f"Module '{module}' was removed.")
libsignal.sendMessage("\n".join(log), RetardsServer)
case ["!modules", "install"]:
system("cp Serve/modules/* modules")
libsignal.sendMessage("Modules installed.", RetardsServer)