A-0.1 - Modularer Aufbau #13

Merged
edraft merged 118 commits from 0.1 into Alpha 2021-11-25 21:02:12 +01:00
2 changed files with 13 additions and 3 deletions
Showing only changes of commit 3390e09ef3 - Show all commits

View File

@ -1,14 +1,21 @@
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
import discord
class ModuleABC(ABC): class ModuleABC(ABC):
@abstractmethod @abstractmethod
def __init__(self): def __init__(self):
self._priorities = {} self._priorities = {}
self._success = True
def get_priority(self, t: type) -> int: def get_priority(self, t: type) -> int:
if t not in self._priorities: if t not in self._priorities:
raise Exception(f'Priority for {t} not found!') raise Exception(f'Priority for {t} not found!')
return self._priorities[t] return self._priorities[t]
def stop_propagation(self):
self._success = False
@property
def success(self) -> bool:
return self._success

View File

@ -84,15 +84,18 @@ class ModuleService(ModuleServiceABC, commands.Cog, metaclass=_MetaCogABC):
modules = self._get_modules(event) modules = self._get_modules(event)
if modules.count() < 1: if modules.count() < 1:
self._logger.debug(__name__, f'Stopped {event} modules') self._logger.debug(__name__, f'Stopped {event} modules')
return return
func_name = String.convert_to_snake_case(event.__name__.split('ABC')[0]) func_name = String.convert_to_snake_case(event.__name__.split('ABC')[0])
for module in modules: for module in modules:
func = getattr(module, func_name) func = getattr(module, func_name)
await func(*args) await func(*args)
if not module.success:
self._logger.debug(__name__, f'Stopped progation for {event} from {type(module)}')
break
self._logger.debug(__name__, f'Stopped {event} modules') self._logger.debug(__name__, f'Stopped {event} modules')
@commands.Cog.listener() @commands.Cog.listener()
async def on_connect(self): async def on_connect(self):