This repository has been archived on 2022-07-14. You can view files and clone it, but cannot push or open issues or pull requests.
sh_gismo/src/modules/base/base_settings.py
2022-01-07 14:35:27 +01:00

91 lines
3.1 KiB
Python

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._purge_message: str = ''
self._no_permissions_message: str = ''
self._afk_command_channel_id: int = 0
self._afk_command_channel_missing_message: str = ''
self._afk_command_move_message: str = ''
@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 purge_message(self) -> str:
return self._purge_message
@property
def no_permissions_message(self) -> str:
return self._no_permissions_message
@property
def afk_command_channel_id(self) -> int:
return self._afk_command_channel_id
@property
def afk_command_channel_missing_message(self) -> str:
return self._afk_command_channel_missing_message
@property
def afk_command_move_message(self) -> str:
return self._afk_command_move_message
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))
self._purge_message = settings['PurgeMessage']
self._no_permissions_message = settings['NoPermissionsMessage']
self._afk_command_channel_id = settings['AFKCommandChannelId']
self._afk_command_channel_missing_message = settings['AFKCommandChannelMissingMessage']
self._afk_command_move_message = settings['AFKCommandMoveMessage']
except Exception as e:
Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {self.__name__} settings')
Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}')