Compare commits
	
		
			14 Commits
		
	
	
		
			3c1f017e3a
			...
			9017535bfb
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9017535bfb | |||
| c608b232b0 | |||
| 6ff53fb31c | |||
| be96644e5c | |||
| 2646dccb91 | |||
| 1a5917ac6b | |||
| 588a8e140f | |||
| b4fce51b57 | |||
| 25cc98732d | |||
| ef41ce03d3 | |||
| 10a502fa4b | |||
| 2a4933f971 | |||
| 36a8d14720 | |||
| 356dc1848c | 
| @@ -162,6 +162,7 @@ | |||||||
|           "discord_join": "Discord beigetreten am", |           "discord_join": "Discord beigetreten am", | ||||||
|           "last_join": "Server beigetreten am", |           "last_join": "Server beigetreten am", | ||||||
|           "xp": "XP", |           "xp": "XP", | ||||||
|  |           "ontime": "Ontime", | ||||||
|           "roles": "Rollen", |           "roles": "Rollen", | ||||||
|           "joins": "Beitritte", |           "joins": "Beitritte", | ||||||
|           "lefts": "Abgänge", |           "lefts": "Abgänge", | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ class UserJoinedVoiceChannelRepositoryABC(ABC): | |||||||
|     def get_user_joined_voice_channel_by_id(self, id: int) -> UserJoinedVoiceChannel: pass |     def get_user_joined_voice_channel_by_id(self, id: int) -> UserJoinedVoiceChannel: pass | ||||||
|      |      | ||||||
|     @abstractmethod |     @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 |     @abstractmethod | ||||||
|     def get_active_user_joined_voice_channel_by_user_id(self, user_id: int) -> UserJoinedVoiceChannel: pass |     def get_active_user_joined_voice_channel_by_user_id(self, user_id: int) -> UserJoinedVoiceChannel: pass | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ from cpl_discord.container import TextChannel | |||||||
| from cpl_discord.service import DiscordBotServiceABC | from cpl_discord.service import DiscordBotServiceABC | ||||||
| from cpl_query.extension import List | from cpl_query.extension import List | ||||||
| from cpl_translation import TranslatePipe | from cpl_translation import TranslatePipe | ||||||
| from discord import app_commands | from discord import app_commands, Guild | ||||||
| from discord.ext import commands | from discord.ext import commands | ||||||
| from discord.ext.commands import Context | from discord.ext.commands import Context | ||||||
|  |  | ||||||
| @@ -258,13 +258,27 @@ class AutoRoleGroup(DiscordCommandABC): | |||||||
|             self._logger.trace(__name__, f'Finished command auto-role rule add') |             self._logger.trace(__name__, f'Finished command auto-role rule add') | ||||||
|             return |             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)) |             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') |             self._logger.trace(__name__, f'Finished command auto-role rule add') | ||||||
|             return |             return | ||||||
|  |  | ||||||
|         self._auto_roles.add_auto_role_rule(AutoRoleRule(auto_role, emoji_name, int(role_id))) |         self._auto_roles.add_auto_role_rule(AutoRoleRule(auto_role, emoji_name, int(role_id))) | ||||||
|         self._db_context.save_changes() |         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)) |         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') |         self._logger.trace(__name__, f'Finished command auto-role rule add') | ||||||
|  |  | ||||||
|   | |||||||
| @@ -58,8 +58,8 @@ class RestartCommand(DiscordCommandABC): | |||||||
|  |  | ||||||
|         self._config.add_configuration('IS_RESTART', 'true') |         self._config.add_configuration('IS_RESTART', 'true') | ||||||
|         await self._client_utils.presence_game('common.presence.restart') |         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 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() |         await self._bot.stop_async() | ||||||
|  |  | ||||||
|         self._logger.trace(__name__, f'Finished restart command') |         self._logger.trace(__name__, f'Finished restart command') | ||||||
|   | |||||||
| @@ -14,6 +14,7 @@ from bot_core.logging.command_logger import CommandLogger | |||||||
| from bot_core.pipes.date_time_offset_pipe import DateTimeOffsetPipe | from bot_core.pipes.date_time_offset_pipe import DateTimeOffsetPipe | ||||||
| from bot_data.abc.server_repository_abc import ServerRepositoryABC | 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_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 bot_data.abc.user_repository_abc import UserRepositoryABC | ||||||
| from modules.permission.abc.permission_service_abc import PermissionServiceABC | from modules.permission.abc.permission_service_abc import PermissionServiceABC | ||||||
|  |  | ||||||
| @@ -31,6 +32,7 @@ class UserGroup(DiscordCommandABC): | |||||||
|             servers: ServerRepositoryABC, |             servers: ServerRepositoryABC, | ||||||
|             users: UserRepositoryABC, |             users: UserRepositoryABC, | ||||||
|             user_joined_servers: UserJoinedServerRepositoryABC, |             user_joined_servers: UserJoinedServerRepositoryABC, | ||||||
|  |             user_joined_voice_channel: UserJoinedVoiceChannelRepositoryABC, | ||||||
|             translate: TranslatePipe, |             translate: TranslatePipe, | ||||||
|             date: DateTimeOffsetPipe |             date: DateTimeOffsetPipe | ||||||
|     ): |     ): | ||||||
| @@ -45,6 +47,7 @@ class UserGroup(DiscordCommandABC): | |||||||
|         self._servers = servers |         self._servers = servers | ||||||
|         self._users = users |         self._users = users | ||||||
|         self._user_joined_servers = user_joined_servers |         self._user_joined_servers = user_joined_servers | ||||||
|  |         self._user_joined_voice_channel = user_joined_voice_channel | ||||||
|         self._t = translate |         self._t = translate | ||||||
|         self._date = date |         self._date = date | ||||||
|  |  | ||||||
| @@ -81,11 +84,15 @@ class UserGroup(DiscordCommandABC): | |||||||
|             color=int('ef9d0d', 16) |             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.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.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.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.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.xp'), value=str(user.xp)) | ||||||
|  |         embed.add_field(name=self._t.transform('modules.base.user_info.fields.ontime'), value=str(ontime)) | ||||||
|  |  | ||||||
|         roles = '' |         roles = '' | ||||||
|         for role in member.roles: |         for role in member.roles: | ||||||
|   | |||||||
| @@ -122,6 +122,11 @@ class LevelGroup(DiscordCommandABC): | |||||||
|             return |             return | ||||||
|         self._client_utils.received_command(ctx.guild.id) |         self._client_utils.received_command(ctx.guild.id) | ||||||
|  |  | ||||||
|  |         if not self._permissions.is_member_admin(ctx.author): | ||||||
|  |             await self._message_service.send_ctx_msg(ctx, self._t.transform('common.no_permission_message')) | ||||||
|  |             self._logger.trace(__name__, f'Finished command level remove') | ||||||
|  |             return | ||||||
|  |  | ||||||
|         try: |         try: | ||||||
|             color = hex(discord.Colour.from_str(color).value) |             color = hex(discord.Colour.from_str(color).value) | ||||||
|         except Exception as e: |         except Exception as e: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user