Merge pull request '#295_member_left_message' (#328) from #295_member_left_message into 1.1.0

Reviewed-on: sh-edraft.de/kd_discord_bot#328
Reviewed-by: edraft-dev <dev.sven.heidemann@sh-edraft.de>
This commit is contained in:
Sven Heidemann 2023-08-14 19:13:03 +02:00
commit 7c7786d2d1
7 changed files with 49 additions and 31 deletions

View File

@ -151,6 +151,7 @@
}
},
"base": {
"member_left_message": "{} hat uns leider verlassen :(",
"complaints": {
"title": "Beschwerde einreichen",
"label": "Beschwerde",

View File

@ -87,7 +87,7 @@ class BaseOnMemberJoinEvent(OnMemberJoinABC):
return
self._logger.debug(__name__, f"Add user: {member.id}")
self._users.add_user(User(member.id, 0, server))
self._users.add_user(User(member.id, 0, 0, 0, server))
self._db.save_changes()
user = self._users.get_user_by_discord_id_and_server_id(member.id, server.id)
self._user_joins.add_user_joined_server(UserJoinedServer(user, datetime.now()))

View File

@ -2,6 +2,7 @@ from datetime import datetime
from typing import Union
import discord
from cpl_core.configuration import ConfigurationABC
from cpl_core.database.context import DatabaseContextABC
from cpl_core.logging import LoggerABC
from cpl_discord.events import OnMemberRemoveABC
@ -12,14 +13,16 @@ from bot_core.helper.event_checks import EventChecks
from bot_data.abc.server_repository_abc import ServerRepositoryABC
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
from bot_data.abc.user_repository_abc import UserRepositoryABC
from bot_data.model.server_config import ServerConfig
class BaseOnMemberRemoveEvent(OnMemberRemoveABC):
def __init__(
self,
config: ConfigurationABC,
logger: LoggerABC,
db: DatabaseContextABC,
messenger: MessageServiceABC,
message_service: MessageServiceABC,
users: UserRepositoryABC,
servers: ServerRepositoryABC,
user_joins: UserJoinedServerRepositoryABC,
@ -27,10 +30,10 @@ class BaseOnMemberRemoveEvent(OnMemberRemoveABC):
):
OnMemberRemoveABC.__init__(self)
self._config = config
self._logger = logger
self._base_helper = base_helper
self._db = db
self._messenger = messenger
self._message_service = message_service
self._users = users
self._servers = servers
self._user_joins = user_joins
@ -38,8 +41,7 @@ class BaseOnMemberRemoveEvent(OnMemberRemoveABC):
async def _remove_user(self, member: Union[discord.User, discord.Member]):
self._logger.debug(__name__, f"Remove user {member}")
settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{member.guild.id}")
await self._messenger.send_dm_message(self._t.transform("modules.base.goodbye_message"), member)
await self._message_service.send_dm_message(self._t.transform("modules.base.goodbye_message"), member)
try:
server = self._servers.get_server_by_discord_id(member.guild.id)
@ -56,7 +58,19 @@ class BaseOnMemberRemoveEvent(OnMemberRemoveABC):
except Exception as e:
self._logger.error(__name__, f"Cannot remove user {member.id}", e)
async def _notify_team(self, member: discord.Member):
self._logger.debug(__name__, f"Notify team that a member left")
settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{member.guild.id}")
channel = member.guild.get_channel(settings.team_channel_id)
await self._message_service.send_channel_message(
channel,
self._t.transform("modules.base.member_left_message").format(member.mention),
is_persistent=True,
)
self._logger.trace(__name__, f"Notified team that a member left")
@EventChecks.check_is_ready()
async def on_member_remove(self, member: discord.Member):
self._logger.debug(__name__, f"Module {type(self)} started")
await self._remove_user(member)
await self._notify_team(member)

View File

@ -1,6 +1,7 @@
from typing import Optional
import discord
from cpl_core.configuration import ConfigurationABC
from cpl_core.database.context import DatabaseContextABC
from cpl_discord.events import OnMessageABC
from cpl_discord.service import DiscordBotServiceABC
@ -19,6 +20,7 @@ from bot_data.model.user import User
class BaseOnMessageEvent(OnMessageABC):
def __init__(
self,
config: ConfigurationABC,
logger: MessageLogger,
client_utils: ClientUtilsService,
db: DatabaseContextABC,
@ -28,6 +30,7 @@ class BaseOnMessageEvent(OnMessageABC):
servers: ServerRepositoryABC,
):
OnMessageABC.__init__(self)
self._config = config
self._logger = logger
self._client_utils = client_utils
self._bot = bot
@ -63,7 +66,7 @@ class BaseOnMessageEvent(OnMessageABC):
self._logger.error(__name__, f"User not found {dc_user_id}")
return
settings: ServerConfig = se
settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{server.discord_id}")
if self._client_utils.is_message_xp_count_by_hour_higher_that_max_message_count_per_hour(
message.created_at, user, settings
):

View File

@ -51,4 +51,4 @@
"tslib": "^2.4.1",
"typescript": "~4.9.5"
}
}
}

View File

@ -365,31 +365,31 @@ export class Queries {
static serverConfigQuery = `
query serverConfigQuery($serverId: ID) {
servers(filter: { id: $serverId }) {
name
config {
id
messageDeleteTimer
notificationChatId
maxVoiceStateHours
xpPerMessage
xpPerReaction
maxMessageXpPerHour
xpPerOntimeHour
xpPerEventParticipation
xpPerAchievement
afkCommandChannelId
helpVoiceChannelId
teamChannelId
loginMessageChannelId
afkChannelIds
moderatorRoleIds
adminRoleIds
server {
name
config {
id
messageDeleteTimer
notificationChatId
maxVoiceStateHours
xpPerMessage
xpPerReaction
maxMessageXpPerHour
xpPerOntimeHour
xpPerEventParticipation
xpPerAchievement
afkCommandChannelId
helpVoiceChannelId
teamChannelId
loginMessageChannelId
afkChannelIds
moderatorRoleIds
adminRoleIds
server {
id
}
}
}
}
}
`;
}

View File

@ -25,4 +25,4 @@
"Name": "sh-edraft-dark-theme"
}
]
}
}