A-0.1 - Modularer Aufbau #13
@ -21,10 +21,12 @@
|
|||||||
"Prefix": "!dev-g",
|
"Prefix": "!dev-g",
|
||||||
"Servers": [
|
"Servers": [
|
||||||
{
|
{
|
||||||
"Id": "511824600884051979"
|
"Id": "511824600884051979",
|
||||||
|
"MessageDeleteTimer": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Id": "910199451145076828"
|
"Id": "910199451145076828",
|
||||||
|
"MessageDeleteTimer": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -7,9 +7,10 @@ from cpl_core.dependency_injection import (ServiceCollectionABC,
|
|||||||
ServiceProviderABC)
|
ServiceProviderABC)
|
||||||
from cpl_core.environment import ApplicationEnvironment
|
from cpl_core.environment import ApplicationEnvironment
|
||||||
from cpl_core.logging import LoggerABC
|
from cpl_core.logging import LoggerABC
|
||||||
|
|
||||||
from gismo_core.abc.bot_service_abc import BotServiceABC
|
from gismo_core.abc.bot_service_abc import BotServiceABC
|
||||||
|
from gismo_core.abc.message_service_abc import MessageServiceABC
|
||||||
from gismo_core.service.bot_service import BotService
|
from gismo_core.service.bot_service import BotService
|
||||||
|
from gismo_core.service.message_service import MessageService
|
||||||
from modules.boot_log.boot_log import BootLog
|
from modules.boot_log.boot_log import BootLog
|
||||||
from modules_core.abc.module_abc import ModuleABC
|
from modules_core.abc.module_abc import ModuleABC
|
||||||
from modules_core.abc.module_service_abc import ModuleServiceABC
|
from modules_core.abc.module_service_abc import ModuleServiceABC
|
||||||
@ -41,6 +42,7 @@ class Startup(StartupABC):
|
|||||||
|
|
||||||
services.add_singleton(ModuleServiceABC, ModuleService)
|
services.add_singleton(ModuleServiceABC, ModuleService)
|
||||||
services.add_singleton(BotServiceABC, BotService)
|
services.add_singleton(BotServiceABC, BotService)
|
||||||
|
services.add_transient(MessageServiceABC, MessageService)
|
||||||
|
|
||||||
services.add_transient(ModuleABC, BootLog)
|
services.add_transient(ModuleABC, BootLog)
|
||||||
|
|
||||||
|
24
src/gismo_core/abc/message_service_abc.py
Normal file
24
src/gismo_core/abc/message_service_abc.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
from abc import ABC, abstractmethod
|
||||||
|
from typing import Union
|
||||||
|
|
||||||
|
import discord
|
||||||
|
from cpl_query.extension import List
|
||||||
|
from discord.ext.commands import Context
|
||||||
|
|
||||||
|
|
||||||
|
class MessageServiceABC(ABC):
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def __init__(self): pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def delete_message(self, messages: List[discord.Message]): pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def send_channel_message(self, channel: discord.TextChannel, message: str): pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def send_dm_message(self, message: str, receiver: Union[discord.User, discord.Member]): pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def send_ctx_msg(self, ctx: Context, message: str, file: discord.File = None): pass
|
@ -9,15 +9,21 @@ class ServerSettings(ConfigurationModelABC):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
ConfigurationModelABC.__init__(self)
|
ConfigurationModelABC.__init__(self)
|
||||||
|
|
||||||
self._id: int = ''
|
self._id: int = 0
|
||||||
|
self._message_delete_timer: int = 0
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def id(self) -> str:
|
def id(self) -> str:
|
||||||
return self._id
|
return self._id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def message_delete_timer(self) -> int:
|
||||||
|
return self._message_delete_timer
|
||||||
|
|
||||||
def from_dict(self, settings: dict):
|
def from_dict(self, settings: dict):
|
||||||
try:
|
try:
|
||||||
self._id = settings['Id']
|
self._id = int(settings['Id'])
|
||||||
|
self._message_delete_timer = int(settings['MessageDeleteTimer'])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in settings')
|
Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in settings')
|
||||||
Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}')
|
Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}')
|
||||||
|
40
src/gismo_core/service/message_service.py
Normal file
40
src/gismo_core/service/message_service.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import asyncio
|
||||||
|
from typing import Union
|
||||||
|
|
||||||
|
import discord
|
||||||
|
from cpl_core.configuration.configuration_abc import ConfigurationABC
|
||||||
|
from cpl_core.logging import LoggerABC
|
||||||
|
from cpl_query.extension import List
|
||||||
|
from discord.ext.commands import Context
|
||||||
|
|
||||||
|
from gismo_core.abc.bot_service_abc import BotServiceABC
|
||||||
|
from gismo_core.abc.message_service_abc import MessageServiceABC
|
||||||
|
from gismo_core.configuration.server_settings import ServerSettings
|
||||||
|
|
||||||
|
|
||||||
|
class MessageService(MessageServiceABC):
|
||||||
|
|
||||||
|
def __init__(self, config: ConfigurationABC, logger: LoggerABC, bot: BotServiceABC):
|
||||||
|
self._config = config
|
||||||
|
self._logger = logger
|
||||||
|
self._bot = bot
|
||||||
|
|
||||||
|
async def delete_message(self, messages: List[discord.Message]):
|
||||||
|
self._logger.debug(__name__, f'Try to delete {messages.count()} messages')
|
||||||
|
for message in messages:
|
||||||
|
message: discord.Message = message
|
||||||
|
server_st: ServerSettings = self._config.get_configuration(f'DSERVER_{message.g.id}')
|
||||||
|
await asyncio.sleep(server_st.message_delete_timer)
|
||||||
|
try:
|
||||||
|
self._logger.trace(__name__, f'Try to delete message: {message.content}')
|
||||||
|
await message.delete()
|
||||||
|
self._logger.trace(__name__, 'Deleted message')
|
||||||
|
except Exception as e:
|
||||||
|
self._logger.warn(__name__, f'Deleting message failed')
|
||||||
|
self._logger.debug(__name__, 'Deleting messages finished')
|
||||||
|
|
||||||
|
async def send_channel_message(self, channel: discord.TextChannel, message: str): pass
|
||||||
|
|
||||||
|
async def send_dm_message(self, message: str, receiver: Union[discord.User, discord.Member]): pass
|
||||||
|
|
||||||
|
async def send_ctx_msg(self, ctx: Context, message: str, file: discord.File = None): pass
|
Reference in New Issue
Block a user