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.") if not log: log.append("Already up to date.") libsignal.sendMessage("\n".join(log), RetardsServer) case ["!modules", "install"]: system("cp Serve/modules/* modules") libsignal.sendMessage("Modules installed.", RetardsServer)