Moved main.py to serve.py, implemented modularization and added control module

This commit is contained in:
Malasaur 2025-08-30 13:43:21 +02:00
parent ad6190b46a
commit e185786959
6 changed files with 138 additions and 21 deletions

View file

@ -1,9 +1,13 @@
from typing import Callable, Dict, List, Optional, Tuple
from subprocess import PIPE, STDOUT, Popen, run
from typing import Callable, List, Optional, Tuple
from importlib import import_module
from typing import List, Tuple
from pathlib import Path
from sys import modules as _modules
from re import Pattern
minecraftOutputBinds: List[Tuple[Pattern, Callable]] = []
minecraftOutputBinds: Dict[str, List[Tuple[Pattern, Callable]]] = {}
minecraftProc = None
@ -22,10 +26,47 @@ class Group:
return f'<Group "{self.name}" at "{self.id}">'
signalMessageBinds: List[Tuple[Optional[Group], Callable]] = []
signalMessageBinds: Dict[str, List[Tuple[Optional[Group], Callable]]] = {}
signalProc = None
def signalInit(cmd: str) -> None:
global signalProc
signalProc = run(cmd.split(), stdout=PIPE)
loadedMods = []
def listModules() -> Tuple[List[str], List[str], List[str]]:
modules = []
loaded_modules = []
unloaded_modules = []
for file in Path("modules").iterdir():
if file.name.endswith(".py"):
modules.append(file.name[:-3])
if file.name[:-3] in loadedMods:
loaded_modules.append(file.name[:-3])
else:
unloaded_modules.append(file.name[:-3])
return modules, loaded_modules, unloaded_modules
def loadModule(module: str):
global loadedMods
if module in listModules()[2]:
minecraftOutputBinds[module] = []
signalMessageBinds[module] = []
import_module("modules."+module)
loadedMods.append(module)
def unloadModule(module: str):
global loadedMods
if module in listModules()[1]:
del _modules["modules."+module]
loadedMods.remove(module)
del minecraftOutputBinds[module]
del signalMessageBinds[module]