Compare commits

..

13 Commits

Author SHA1 Message Date
8fafc94118 Merge branch '0.3' into #103 2022-11-11 07:28:21 +01:00
c608b232b0 Merge pull request '0.3 - Ontime in user info (#97)' (#107) from #97 into 0.3
Reviewed-on: sh-edraft.de/kd_discord_bot#107
Reviewed-by: Ebola-Chan <nick.jungmann@gmail.com>
Closes #97
2022-11-11 07:26:44 +01:00
6ff53fb31c Merge branch '0.3' into #97 2022-11-11 07:26:34 +01:00
be96644e5c Merge pull request '0.3 - AutoRole Emoji zu nachricht nach Anlegen einer Regel hinzufügen (#63)' (#110) from #63 into 0.3
Reviewed-on: sh-edraft.de/kd_discord_bot#110
Reviewed-by: Ebola-Chan <nick.jungmann@gmail.com>
Closes #63
2022-11-11 07:26:28 +01:00
2646dccb91 Merge branch '0.3' into #63 2022-11-11 07:25:52 +01:00
1a5917ac6b Merge pull request '0.3 - Nachricht bei shutdown und restart wird nicht geschickt vor neustart (#62)' (#111) from #62 into 0.3
Reviewed-on: sh-edraft.de/kd_discord_bot#111
Reviewed-by: Ebola-Chan <nick.jungmann@gmail.com>
Closes #62
2022-11-11 07:21:34 +01:00
588a8e140f Merge branch '0.3' into #62 2022-11-11 07:21:21 +01:00
25cc98732d Fixed restart after message #62 2022-11-10 20:02:53 +01:00
ef41ce03d3 Added functionality to auto-role rule add to add reaction to message #63 2022-11-10 19:50:42 +01:00
10a502fa4b Merge branch '#97' of https://git.sh-edraft.de/sh-edraft.de/kd_discord_bot into #97 2022-11-10 08:23:46 +01:00
2a4933f971 Added ontime to user info #97 2022-11-10 08:23:40 +01:00
36a8d14720 Merge branch '0.3' into #97 2022-11-10 07:12:32 +01:00
356dc1848c Added ontime to user info #97 2022-11-09 22:34:25 +01:00
5 changed files with 26 additions and 4 deletions

View File

@ -162,6 +162,7 @@
"discord_join": "Discord beigetreten am",
"last_join": "Server beigetreten am",
"xp": "XP",
"ontime": "Ontime",
"roles": "Rollen",
"joins": "Beitritte",
"lefts": "Abgänge",

View File

@ -16,7 +16,7 @@ class UserJoinedVoiceChannelRepositoryABC(ABC):
def get_user_joined_voice_channel_by_id(self, id: int) -> UserJoinedVoiceChannel: pass
@abstractmethod
def get_user_joined_voice_channels_by_user_id(self, user_id: int) -> list[UserJoinedVoiceChannel]: pass
def get_user_joined_voice_channels_by_user_id(self, user_id: int) -> List[UserJoinedVoiceChannel]: pass
@abstractmethod
def get_active_user_joined_voice_channel_by_user_id(self, user_id: int) -> UserJoinedVoiceChannel: pass

View File

@ -7,7 +7,7 @@ from cpl_discord.container import TextChannel
from cpl_discord.service import DiscordBotServiceABC
from cpl_query.extension import List
from cpl_translation import TranslatePipe
from discord import app_commands
from discord import app_commands, Guild
from discord.ext import commands
from discord.ext.commands import Context
@ -258,13 +258,27 @@ class AutoRoleGroup(DiscordCommandABC):
self._logger.trace(__name__, f'Finished command auto-role rule add')
return
if self._auto_roles.get_auto_role_rules_by_auto_role_id(auto_role).where(lambda r: r.emoji_name == emoji.name and int(role_id) == role.id).count() > 0:
if self._auto_roles.get_auto_role_rules_by_auto_role_id(auto_role).where(lambda r: r.emoji_name == emoji.name and int(role_id) == role.id).first_or_default() is not None:
await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.auto_role.add.error.already_exists').format(auto_role))
self._logger.trace(__name__, f'Finished command auto-role rule add')
return
self._auto_roles.add_auto_role_rule(AutoRoleRule(auto_role, emoji_name, int(role_id)))
self._db_context.save_changes()
rule = self._auto_roles.get_auto_role_rules_by_auto_role_id(auto_role).where(lambda r: r.emoji_name == emoji.name and int(role_id) == role.id).single()
try:
message = await ctx.fetch_message(auto_role_from_db.discord_message_id)
guild: Guild = self._bot.guilds.where(lambda g: g == ctx.guild).single()
emoji = List(discord.Emoji, guild.emojis).where(lambda x: x.name == rule.emoji_name).single()
if emoji is None:
self._logger.debug(__name__, f'Emoji {rule.emoji_name} not found')
return
await message.add_reaction(emoji)
self._logger.debug(__name__, f'Added reaction {rule.emoji_name} to message: {auto_role_from_db.discord_message_id}')
except Exception as e:
self._logger.error(__name__, f'Cannot add reaction {rule.emoji_name} to message: {auto_role_from_db.discord_message_id}', e)
await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.auto_role.rule.add.success').format(emoji, role.name, auto_role))
self._logger.trace(__name__, f'Finished command auto-role rule add')

View File

@ -58,8 +58,8 @@ class RestartCommand(DiscordCommandABC):
self._config.add_configuration('IS_RESTART', 'true')
await self._client_utils.presence_game('common.presence.restart')
await asyncio.sleep(self._settings.wait_for_restart)
await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.admin.restart_message'))
await asyncio.sleep(self._settings.wait_for_restart)
await self._bot.stop_async()
self._logger.trace(__name__, f'Finished restart command')

View File

@ -14,6 +14,7 @@ from bot_core.logging.command_logger import CommandLogger
from bot_core.pipes.date_time_offset_pipe import DateTimeOffsetPipe
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_joined_voice_channel_abc import UserJoinedVoiceChannelRepositoryABC
from bot_data.abc.user_repository_abc import UserRepositoryABC
from modules.permission.abc.permission_service_abc import PermissionServiceABC
@ -31,6 +32,7 @@ class UserGroup(DiscordCommandABC):
servers: ServerRepositoryABC,
users: UserRepositoryABC,
user_joined_servers: UserJoinedServerRepositoryABC,
user_joined_voice_channel: UserJoinedVoiceChannelRepositoryABC,
translate: TranslatePipe,
date: DateTimeOffsetPipe
):
@ -45,6 +47,7 @@ class UserGroup(DiscordCommandABC):
self._servers = servers
self._users = users
self._user_joined_servers = user_joined_servers
self._user_joined_voice_channel = user_joined_voice_channel
self._t = translate
self._date = date
@ -81,11 +84,15 @@ class UserGroup(DiscordCommandABC):
color=int('ef9d0d', 16)
)
ujvs = self._user_joined_voice_channel.get_user_joined_voice_channels_by_user_id(user.user_id)
ontime = ujvs.sum(lambda join: round((join.leaved_on - join.joined_on).total_seconds() / 3600, 2))
embed.add_field(name=self._t.transform('modules.base.user_info.fields.id'), value=member.id)
embed.add_field(name=self._t.transform('modules.base.user_info.fields.name'), value=member.name)
embed.add_field(name=self._t.transform('modules.base.user_info.fields.discord_join'), value=self._date.transform(member.created_at), inline=False)
embed.add_field(name=self._t.transform('modules.base.user_info.fields.last_join'), value=self._date.transform(member.joined_at), inline=False)
embed.add_field(name=self._t.transform('modules.base.user_info.fields.xp'), value=str(user.xp))
embed.add_field(name=self._t.transform('modules.base.user_info.fields.ontime'), value=str(ontime))
roles = ''
for role in member.roles: