2022-07-14 16:32:46 +02:00
|
|
|
from cpl_core.configuration import ConfigurationABC
|
|
|
|
from cpl_core.console import Console
|
|
|
|
from cpl_core.dependency_injection import ServiceProviderABC
|
2022-07-16 19:47:04 +02:00
|
|
|
from cpl_core.logging import LoggerABC
|
|
|
|
from cpl_discord.application import DiscordBotApplicationABC
|
|
|
|
from cpl_discord.configuration import DiscordBotSettings
|
|
|
|
from cpl_discord.service import DiscordBotServiceABC, DiscordBotService
|
|
|
|
from cpl_translation import TranslatePipe, TranslationServiceABC, TranslationSettings
|
2022-07-14 16:32:46 +02:00
|
|
|
|
|
|
|
|
2022-07-16 19:47:04 +02:00
|
|
|
class Application(DiscordBotApplicationABC):
|
2022-07-14 16:32:46 +02:00
|
|
|
|
|
|
|
def __init__(self, config: ConfigurationABC, services: ServiceProviderABC):
|
2022-07-16 19:47:04 +02:00
|
|
|
DiscordBotApplicationABC.__init__(self, config, services)
|
|
|
|
|
|
|
|
# cpl-core
|
|
|
|
self._logger: LoggerABC = services.get_service(LoggerABC)
|
|
|
|
# cpl-discord
|
|
|
|
self._bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
|
|
|
|
self._bot_settings: DiscordBotSettings = config.get_configuration(DiscordBotSettings)
|
|
|
|
# cpl-translation
|
|
|
|
self._translation: TranslationServiceABC = services.get_service(TranslationServiceABC)
|
|
|
|
self._translate: TranslatePipe = services.get_service(TranslatePipe)
|
2022-07-14 16:32:46 +02:00
|
|
|
|
|
|
|
async def configure(self):
|
2022-07-16 19:47:04 +02:00
|
|
|
self._translation.load_by_settings(self._configuration.get_configuration(TranslationSettings))
|
2022-07-14 16:32:46 +02:00
|
|
|
|
|
|
|
async def main(self):
|
2022-07-16 19:47:04 +02:00
|
|
|
try:
|
|
|
|
self._logger.debug(__name__, f'Starting...\n')
|
|
|
|
self._logger.trace(__name__, f'Try to start {DiscordBotService.__name__}')
|
|
|
|
await self._bot.start_async()
|
|
|
|
except Exception as e:
|
|
|
|
self._logger.error(__name__, 'Start failed', e)
|
|
|
|
|
|
|
|
async def stop_async(self):
|
|
|
|
try:
|
|
|
|
self._logger.trace(__name__, f'Try to stop {DiscordBotService.__name__}')
|
|
|
|
await self._bot.close()
|
|
|
|
self._logger.trace(__name__, f'Stopped {DiscordBotService.__name__}')
|
|
|
|
except Exception as e:
|
|
|
|
self._logger.error(__name__, 'stop failed', e)
|
|
|
|
|
|
|
|
Console.write_line()
|