[WIP] Improved configuration handling

This commit is contained in:
2021-12-27 19:41:16 +01:00
parent 4db97248ca
commit 2f657a7ce7
7 changed files with 120 additions and 92 deletions

View File

@@ -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):

View File

@@ -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()}')

View File

@@ -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):