Added logic to wait before handling command & migrated shutdown command #42

This commit is contained in:
2022-10-02 01:52:32 +02:00
parent a4dc66396e
commit a939c741cb
9 changed files with 47 additions and 10 deletions

View File

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

View File

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

View File

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

View File

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