Sprint 0.2 #55
| @@ -37,7 +37,8 @@ | ||||
|       "extension_already_loaded": "Fehler: Erweiterung wurde bereits geladen!", | ||||
|       "extension_not_loaded": "Fehler: Erweiterung wurde nicht geladen!", | ||||
|       "no_entry_point_error": "Fehler: Kein Eintrittspunkt!", | ||||
|       "extension_failed": "Fehler: Erweiterung ist fehlgeschlagen!" | ||||
|       "extension_failed": "Fehler: Erweiterung ist fehlgeschlagen!", | ||||
|       "bot_not_ready_yet": "Ey Alter! Gedulde dich doch mal! ..." | ||||
|     } | ||||
|   }, | ||||
|   "modules": { | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| from abc import ABC, abstractmethod | ||||
|  | ||||
| from discord.ext.commands import Context | ||||
|  | ||||
|  | ||||
| class ClientUtilsServiceABC(ABC): | ||||
|  | ||||
| @@ -14,3 +16,6 @@ class ClientUtilsServiceABC(ABC): | ||||
|  | ||||
|     @abstractmethod | ||||
|     def get_client(self, dc_ic: int, guild_id: int): pass | ||||
|  | ||||
|     @abstractmethod | ||||
|     async def check_if_bot_is_ready_yet_and_respond(self, ctx: Context) -> bool: pass | ||||
|   | ||||
| @@ -12,16 +12,18 @@ class BotSettings(ConfigurationModelABC): | ||||
|     def __init__(self): | ||||
|         ConfigurationModelABC.__init__(self) | ||||
|  | ||||
|         self._servers: List[ServerSettings] = List() | ||||
|         self._technicians: list[int] = [] | ||||
|         self._servers: List[ServerSettings] = List(ServerSettings) | ||||
|         self._technicians: List[int] = List(int) | ||||
|         self._deploy_file_path = './' | ||||
|         self._wait_for_restart = 2 | ||||
|         self._wait_for_shutdown = 2 | ||||
|      | ||||
|     @property | ||||
|     def servers(self) -> List[ServerSettings]: | ||||
|         return self._servers | ||||
|  | ||||
|     @property | ||||
|     def technicians(self) -> list[int]: | ||||
|     def technicians(self) -> List[int]: | ||||
|         return self._technicians | ||||
|  | ||||
|     @property | ||||
|   | ||||
| @@ -1,8 +1,13 @@ | ||||
| from cpl_core.configuration import ConfigurationABC | ||||
| from cpl_core.database.context import DatabaseContextABC | ||||
| from cpl_core.logging import LoggerABC | ||||
|  | ||||
| from cpl_discord.service import DiscordBotServiceABC | ||||
| from cpl_translation import TranslatePipe | ||||
| from discord.ext.commands import Context | ||||
|  | ||||
| from bot_core.abc.client_utils_service_abc import ClientUtilsServiceABC | ||||
| from bot_core.abc.message_service_abc import MessageServiceABC | ||||
| from bot_data.abc.client_repository_abc import ClientRepositoryABC | ||||
| from bot_data.abc.server_repository_abc import ServerRepositoryABC | ||||
|  | ||||
| @@ -11,16 +16,24 @@ class ClientUtilsService(ClientUtilsServiceABC): | ||||
|  | ||||
|     def __init__( | ||||
|             self, | ||||
|             config: ConfigurationABC, | ||||
|             logger: LoggerABC, | ||||
|             bot: DiscordBotServiceABC, | ||||
|             servers: ServerRepositoryABC, | ||||
|             clients: ClientRepositoryABC, | ||||
|             db: DatabaseContextABC | ||||
|             message_service: MessageServiceABC, | ||||
|             db: DatabaseContextABC, | ||||
|             t: TranslatePipe | ||||
|     ): | ||||
|         ClientUtilsServiceABC.__init__(self) | ||||
|         self._config = config | ||||
|         self._logger = logger | ||||
|         self._bot = bot | ||||
|         self._servers = servers | ||||
|         self._clients = clients | ||||
|         self._message_service = message_service | ||||
|         self._db = db | ||||
|         self._t = t | ||||
|  | ||||
|     def received_command(self, guild_id: int): | ||||
|         server = self._servers.get_server_by_discord_id(guild_id) | ||||
| @@ -40,3 +53,11 @@ class ClientUtilsService(ClientUtilsServiceABC): | ||||
|         server = self._servers.get_server_by_discord_id(guild_id) | ||||
|         client = self._clients.find_client_by_discord_id_and_server_id(self._bot.user.id, server.server_id) | ||||
|         return client | ||||
|  | ||||
|     async def check_if_bot_is_ready_yet_and_respond(self, ctx: Context) -> bool: | ||||
|         if self._config.get_configuration('IS_READY') == 'true': | ||||
|             return True | ||||
|  | ||||
|         self._logger.debug(__name__, f'Bot is not ready yet {self._t.transform("common.errors.bot_not_ready_yet")}') | ||||
|         await self._message_service.send_ctx_msg(ctx, self._t.transform('common.errors.bot_not_ready_yet'), without_tracking=True) | ||||
|         return False | ||||
|   | ||||
| @@ -39,6 +39,7 @@ class MessageService(MessageServiceABC): | ||||
|         guild_id = message.guild.id | ||||
|         try: | ||||
|             await message.delete() | ||||
|             await asyncio.sleep(server_st.message_delete_timer) | ||||
|         except Exception as e: | ||||
|             self._logger.error(__name__, f'Deleting message failed', e) | ||||
|         else: | ||||
| @@ -107,4 +108,4 @@ class MessageService(MessageServiceABC): | ||||
|                 return | ||||
|  | ||||
|             if ctx.guild is not None: | ||||
|                 await self.delete_message(msg) | ||||
|                 await self.delete_message(msg, without_tracking) | ||||
|   | ||||
| @@ -39,6 +39,9 @@ class RestartCommand(DiscordCommandABC): | ||||
|     @commands.guild_only() | ||||
|     async def restart(self, ctx: Context): | ||||
|         self._logger.debug(__name__, f'Received command restart {ctx}') | ||||
|         if not await self._client_utils.check_if_bot_is_ready_yet_and_respond(ctx): | ||||
|             return | ||||
|  | ||||
|         self._client_utils.received_command(ctx.guild.id) | ||||
|  | ||||
|         if not self._permissions.is_member_moderator(ctx.author): | ||||
|   | ||||
| @@ -35,10 +35,13 @@ class ShutdownCommand(DiscordCommandABC): | ||||
|  | ||||
|         self._logger.trace(__name__, f'Loaded command service: {type(self).__name__}') | ||||
|  | ||||
|     @commands.command() | ||||
|     @commands.hybrid_command() | ||||
|     @commands.guild_only() | ||||
|     async def shutdown(self, ctx: Context): | ||||
|         self._logger.debug(__name__, f'Received command shutdown {ctx}') | ||||
|         if not await self._client_utils.check_if_bot_is_ready_yet_and_respond(ctx): | ||||
|             return | ||||
|  | ||||
|         self._client_utils.received_command(ctx.guild.id) | ||||
|  | ||||
|         if not self._permissions.is_member_moderator(ctx.author): | ||||
|   | ||||
| @@ -72,6 +72,7 @@ class BootLogOnReadyEvent(OnReadyABC): | ||||
|                 ), | ||||
|                 self._t.transform('modules.boot_log.login_message').format(init_time) | ||||
|             ) | ||||
|             self._logger.info(__name__, 'Bot is ready') | ||||
|  | ||||
|         self._config.add_configuration('IS_READY', 'true') | ||||
|         self._logger.info(__name__, 'Bot is ready') | ||||
|         self._logger.trace(__name__, f'Module {type(self)} stopped') | ||||
|   | ||||
| @@ -106,7 +106,7 @@ class PermissionService(PermissionServiceABC): | ||||
|         return self._moderators[g_id] | ||||
|  | ||||
|     def is_member_admin(self, member: discord.Member) -> bool: | ||||
|         return member in self._admins[member.guild.id] | ||||
|         return member.guild.id in self._admins and member in self._admins[member.guild.id] | ||||
|  | ||||
|     def is_member_moderator(self, member: discord.Member) -> bool: | ||||
|         return member in self._moderators[member.guild.id] or self.is_member_admin(member) | ||||
|         return member.guild.id in self._moderators and member in self._moderators[member.guild.id] or self.is_member_admin(member) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user