diff --git a/src/gismo/config/base.json b/src/gismo/config/base.json index 7a73a41..41b1cd3 100644 --- a/src/gismo/config/base.json +++ b/src/gismo/config/base.json @@ -1,2 +1,20 @@ { + "910199451145076828": { + "WelcomeMessage": "Hello There!\nIch bin Gismo und heiße dich bei {} herzlichst willkommen!", + "WelcomeMessageForTeam": "{} hat gerade das Irrenhaus betreten.", + "GoodbyeMessage": "Schade das du uns so schnell verlässt :(", + "MaxVoiceStateHours": 24, + "XpPerMessage": 2, + "XpPerOntimeHour": 4, + "AFKChannelIds": [ + 910199452915093593, + 910199452915093594 + ], + "AdminRoleIds": [ + 925072155203477584 + ], + "ModeratorRoleIds": [ + 925072209884635167 + ] + } } \ No newline at end of file diff --git a/src/gismo/config/boot_log.json b/src/gismo/config/boot_log.json index f54b141..155cf7c 100644 --- a/src/gismo/config/boot_log.json +++ b/src/gismo/config/boot_log.json @@ -2,9 +2,5 @@ "910199451145076828": { "LoginMessageChannelId": "910199452915093588", "LoginMessage": "Ich bin on the line :D\nDer Start hat {} Sekunden gedauert" - }, - "511824600884051979": { - "LoginMessageChannelId": "521260270757347328", - "LoginMessage": "Ich bin on the line :D\nDer Start hat {} Sekunden gedauert" } } \ No newline at end of file diff --git a/src/gismo_core/configuration/server_settings.py b/src/gismo_core/configuration/server_settings.py index d9e3402..f4dffc4 100644 --- a/src/gismo_core/configuration/server_settings.py +++ b/src/gismo_core/configuration/server_settings.py @@ -11,17 +11,6 @@ class ServerSettings(ConfigurationModelABC): self._id: int = 0 self._message_delete_timer: int = 0 - self._login_message_channel_id: int = 0 - self._login_message: str = '' - self._welcome_message: str = '' - self._welcome_message_for_team: str = '' - self._goodbye_message: str = '' - self._max_voice_state_hours: int = 0 - self._xp_per_message: int = 0 - self._xp_per_ontime_hour: int = 0 - self._afk_channel_ids: list[int] = [] - self._admin_roles: list[int] = [] - self._moderator_roles: list[int] = [] @property def id(self) -> str: @@ -30,71 +19,11 @@ class ServerSettings(ConfigurationModelABC): @property def message_delete_timer(self) -> int: return self._message_delete_timer - - @property - def login_message_channel_id(self) -> int: - return self._login_message_channel_id - - @property - def login_message(self) -> str: - return self._login_message - - @property - def welcome_message(self) -> str: - return self._welcome_message - - @property - def welcome_message_for_team(self) -> str: - return self._welcome_message_for_team - - @property - def goodbye_message(self) -> str: - return self._goodbye_message - - @property - def max_voice_state_hours(self) -> int: - return self._max_voice_state_hours - - @property - def xp_per_message(self) -> int: - return self._xp_per_message - - @property - def xp_per_ontime_hour(self) -> int: - return self._xp_per_ontime_hour - - @property - def afk_channel_ids(self) -> list[int]: - return self._afk_channel_ids - - @property - def admin_roles(self) -> list[int]: - return self._admin_roles - - @property - def moderator_roles(self) -> list[int]: - return self._moderator_roles def from_dict(self, settings: dict): try: self._id = int(settings['Id']) - self._message_delete_timer = int(settings['MessageDeleteTimer']) - self._login_message_channel_id = int(settings['LoginMessageChannelId']) - self._login_message = settings['LoginMessage'] - self._welcome_message = settings['WelcomeMessage'] - self._welcome_message_for_team = settings['WelcomeMessageForTeam'] - self._goodbye_message = settings['GoodbyeMessage'] - self._max_voice_state_hours = int(settings['MaxVoiceStateHours']) - self._xp_per_message = int(settings['XpPerMessage']) - self._xp_per_ontime_hour = int(settings['XpPerOntimeHour']) - for id in settings['AFKChannelIds']: - self._afk_channel_ids.append(int(id)) - - for id in settings['AdminRoleIds']: - self._admin_roles.append(int(id)) - - for id in settings['ModeratorRoleIds']: - self._moderator_roles.append(int(id)) + self._message_delete_timer = int(settings['MessageDeleteTimer']) except Exception as e: Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in settings') Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') diff --git a/src/modules/base/base.py b/src/modules/base/base.py index 5fd7892..ff3e3f9 100644 --- a/src/modules/base/base.py +++ b/src/modules/base/base.py @@ -20,6 +20,7 @@ from gismo_data.model.known_user import KnownUser from gismo_data.model.user import User from gismo_data.model.user_joined_server import UserJoinedServer from gismo_data.model.user_joined_voice_channel import UserJoinedVoiceChannel +from modules.base.base_settings import BaseSettings from modules_core.abc.events.on_member_join_abc import OnMemberJoinABC from modules_core.abc.events.on_member_remove_abc import OnMemberRemoveABC from modules_core.abc.events.on_message_abc import OnMessageABC @@ -56,11 +57,16 @@ class Base(ModuleABC, OnMemberJoinABC, OnMemberRemoveABC, OnMessageABC, OnVoiceS self._db = db self._messenger = messenger - ModuleABC.__init__(self) - self._priorities[OnMemberJoinABC] = 1 - self._priorities[OnMemberRemoveABC] = 1 - self._priorities[OnMessageABC] = 30 - self._priorities[OnVoiceStateUpdateABC] = 10 + ModuleABC.__init__( + self, + { + OnMemberJoinABC: 1, + OnMemberRemoveABC: 1, + OnMessageABC: 30, + OnVoiceStateUpdateABC: 10 + }, + BaseSettings + ) self._logger.trace(__name__, f'Module {type(self)} loaded') def _apppend_received_message_count(self, g_id: int): diff --git a/src/modules/base/base_settings.py b/src/modules/base/base_settings.py new file mode 100644 index 0000000..112e4e8 --- /dev/null +++ b/src/modules/base/base_settings.py @@ -0,0 +1,76 @@ +import traceback + +from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC +from cpl_core.console import Console + + +class BaseSettings(ConfigurationModelABC): + + def __init__(self): + ConfigurationModelABC.__init__(self) + + self._welcome_message: str = '' + self._welcome_message_for_team: str = '' + self._goodbye_message: str = '' + self._max_voice_state_hours: int = 0 + self._xp_per_message: int = 0 + self._xp_per_ontime_hour: int = 0 + self._afk_channel_ids: list[int] = [] + self._admin_roles: list[int] = [] + self._moderator_roles: list[int] = [] + + @property + def welcome_message(self) -> str: + return self._welcome_message + + @property + def welcome_message_for_team(self) -> str: + return self._welcome_message_for_team + + @property + def goodbye_message(self) -> str: + return self._goodbye_message + + @property + def max_voice_state_hours(self) -> int: + return self._max_voice_state_hours + + @property + def xp_per_message(self) -> int: + return self._xp_per_message + + @property + def xp_per_ontime_hour(self) -> int: + return self._xp_per_ontime_hour + + @property + def afk_channel_ids(self) -> list[int]: + return self._afk_channel_ids + + @property + def admin_roles(self) -> list[int]: + return self._admin_roles + + @property + def moderator_roles(self) -> list[int]: + return self._moderator_roles + + def from_dict(self, settings: dict): + try: + self._welcome_message = settings['WelcomeMessage'] + self._welcome_message_for_team = settings['WelcomeMessageForTeam'] + self._goodbye_message = settings['GoodbyeMessage'] + self._max_voice_state_hours = int(settings['MaxVoiceStateHours']) + self._xp_per_message = int(settings['XpPerMessage']) + self._xp_per_ontime_hour = int(settings['XpPerOntimeHour']) + for id in settings['AFKChannelIds']: + self._afk_channel_ids.append(int(id)) + + for id in settings['AdminRoleIds']: + self._admin_roles.append(int(id)) + + for id in settings['ModeratorRoleIds']: + self._moderator_roles.append(int(id)) + except Exception as e: + Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings') + Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') diff --git a/src/modules/database/database.py b/src/modules/database/database.py index 65730df..eb19850 100644 --- a/src/modules/database/database.py +++ b/src/modules/database/database.py @@ -52,8 +52,11 @@ class Database(ModuleABC, OnReadyABC): self._user_joins = user_joins self._user_joins_vc = user_joins_vc - ModuleABC.__init__(self) - self._priorities[OnReadyABC] = 0 + ModuleABC.__init__( + self, + { OnReadyABC: 0 }, + None + ) self._logger.trace(__name__, f'Module {type(self)} loaded') def _validate_init_time(self): diff --git a/src/modules_core/service/module_service.py b/src/modules_core/service/module_service.py index 965e0f6..d029056 100644 --- a/src/modules_core/service/module_service.py +++ b/src/modules_core/service/module_service.py @@ -82,14 +82,15 @@ class ModuleService(ModuleServiceABC, commands.Cog, metaclass=_MetaCogABC): if module is None: self._logger.warn(__name__, f'Module {module_type} not found in services!') break - - with open(f'config/{String.convert_to_snake_case(type(module).__name__).lower()}.json', encoding='utf-8') as cfg: - json_cfg = json.load(cfg) - for id in json_cfg: - settings: ConfigurationModelABC = module.settings_type() - settings.from_dict(json_cfg[id]) - self._config.add_configuration(f'{type(module).__name__}_{id}', settings) - self._logger.debug(__name__, f'Added config: {type(module).__name__}_{id}') + + if (module.settings_type is not None): + with open(f'config/{String.convert_to_snake_case(type(module).__name__).lower()}.json', encoding='utf-8') as cfg: + json_cfg = json.load(cfg) + for id in json_cfg: + settings: ConfigurationModelABC = module.settings_type() + settings.from_dict(json_cfg[id]) + self._config.add_configuration(f'{type(module).__name__}_{id}', settings) + self._logger.debug(__name__, f'Added config: {type(module).__name__}_{id}') modules.append(module) @@ -106,7 +107,6 @@ class ModuleService(ModuleServiceABC, commands.Cog, metaclass=_MetaCogABC): func_name = String.convert_to_snake_case(event.__name__.split('ABC')[0]) for module in modules: func = getattr(module, func_name) - exit() await func(*args) if not module.success: self._logger.debug(__name__, f'Stopped propagation for {event} from {type(module)}')