mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-17 08:15:42 +00:00
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
import os
|
|
import types
|
|
|
|
from core import get_logger
|
|
|
|
|
|
class KuiToi:
|
|
|
|
def __init__(self, name=None):
|
|
if name is None:
|
|
raise Exception("BeamMP: Name is required")
|
|
self.log = get_logger(f"PluginsLoader | {name}")
|
|
self.name = name
|
|
|
|
def set_name(self, name):
|
|
self.name = name
|
|
|
|
@staticmethod
|
|
def register_event(event_name, event_func):
|
|
ev.register_event(event_name, event_func)
|
|
|
|
@staticmethod
|
|
def call_event(event_name, *data):
|
|
ev.call_event(event_name, *data)
|
|
|
|
|
|
class PluginsLoader:
|
|
|
|
def __init__(self, plugins_dir):
|
|
self.__plugins = {}
|
|
self.__plugins_dir = plugins_dir
|
|
self.log = get_logger("PluginsLoader")
|
|
|
|
def load_plugins(self):
|
|
self.log.debug("Loading plugins...")
|
|
files = os.listdir(self.__plugins_dir)
|
|
for file in files:
|
|
if file.endswith(".py"):
|
|
try:
|
|
self.log.debug(f"Loading plugin: {file}")
|
|
plugin = types.ModuleType('plugin')
|
|
plugin.KuiToi = KuiToi
|
|
plugin.print = print
|
|
file = os.path.join(self.__plugins_dir, file)
|
|
with open(f'{file}', 'r') as f:
|
|
code = f.read().replace("import KuiToi\n", "")
|
|
exec(code, plugin.__dict__)
|
|
plugin.load()
|
|
self.__plugins.update({file[:-3]: plugin})
|
|
self.log.debug(f"Plugin loaded: {file}")
|
|
except Exception as e:
|
|
self.log.error(f"Error loading plugin: {file}; Error: {e}")
|