diff --git a/src/modules/EventsSystem/__init__.py b/src/modules/EventsSystem/__init__.py new file mode 100644 index 0000000..b460c84 --- /dev/null +++ b/src/modules/EventsSystem/__init__.py @@ -0,0 +1 @@ +from .events_system import EventsSystem diff --git a/src/modules/EventsSystem/events-builtins.pyi b/src/modules/EventsSystem/events-builtins.pyi new file mode 100644 index 0000000..204aee4 --- /dev/null +++ b/src/modules/EventsSystem/events-builtins.pyi @@ -0,0 +1,6 @@ +class EventsSystem: + @staticmethod + def register_event(self, event_name, event_func): ... + @staticmethod + def call_event(self, event_name, *data): ... +class ev(EventsSystem): ... diff --git a/src/modules/EventsSystem/events_system.py b/src/modules/EventsSystem/events_system.py new file mode 100644 index 0000000..196e244 --- /dev/null +++ b/src/modules/EventsSystem/events_system.py @@ -0,0 +1,49 @@ +import builtins + +from core import get_logger + + +class EventsSystem: + + def __init__(self): + self.__events = { + "on_starting": [self.on_starting], + "on_started": [self.on_started], + "on_stop": [self.on_stop], + "on_auth": [self.on_auth] + } + self.log = get_logger("EventsSystem") + + def builtins_hook(self): + self.log.debug("used builtins_hook") + builtins.ev = self + + def register_event(self, event_name, event_func): + self.log.debug(f"register_event({event_name}, {event_func}):") + if callable(event_func): + self.log.error(f"Cannot add event '{event_name}'. " + f"Use `BEAMP.add_event({event_name}', function)` instead. Skipping it...") + if event_name not in self.__events: + self.__events.update({str(event_name): [event_func]}) + else: + self.__events[event_name].append(event_func) + + def call_event(self, event_name, *data): + self.log.debug(f"Using event '{event_name}'") + if event_name in self.__events.keys(): + for event in self.__events[event_name]: + event(*data) + else: + self.log.warning(f"Event {event_name} does not exist. Just skipping it...") + + def on_starting(self): + pass + + def on_started(self): + pass + + def on_stop(self): + pass + + def on_auth(self): + pass diff --git a/src/modules/__init__.py b/src/modules/__init__.py index 003fa13..d637e02 100644 --- a/src/modules/__init__.py +++ b/src/modules/__init__.py @@ -9,3 +9,4 @@ from .console import Console from .config_provider import ConfigProvider, Config from .i18n import MultiLanguage +from .EventsSystem import EventsSystem