Compare commits
	
		
			2 Commits
		
	
	
		
			42d8a16d05
			...
			91285540c6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 91285540c6 | |||
| 442170eca9 | 
 Submodule kdb-bot/src/bot/config updated: bd8d3a5dad...58934dde3c
									
								
							| @@ -1,3 +1,4 @@ | |||||||
|  | import discord | ||||||
| from cpl_discord.command import DiscordCommandABC | from cpl_discord.command import DiscordCommandABC | ||||||
| from cpl_discord.service import DiscordBotServiceABC | from cpl_discord.service import DiscordBotServiceABC | ||||||
| from cpl_translation import TranslatePipe | from cpl_translation import TranslatePipe | ||||||
| @@ -8,6 +9,10 @@ from bot_core.abc.client_utils_service_abc import ClientUtilsServiceABC | |||||||
| from bot_core.abc.message_service_abc import MessageServiceABC | from bot_core.abc.message_service_abc import MessageServiceABC | ||||||
| from bot_core.helper.command_checks import CommandChecks | from bot_core.helper.command_checks import CommandChecks | ||||||
| from bot_core.logging.command_logger import CommandLogger | from bot_core.logging.command_logger import CommandLogger | ||||||
|  | from bot_data.abc.server_repository_abc import ServerRepositoryABC | ||||||
|  | from modules.base.abc.base_helper_abc import BaseHelperABC | ||||||
|  | from modules.base.configuration.base_server_settings import BaseServerSettings | ||||||
|  | from modules.permission.abc.permission_service_abc import PermissionServiceABC | ||||||
|  |  | ||||||
|  |  | ||||||
| class PingCommand(DiscordCommandABC): | class PingCommand(DiscordCommandABC): | ||||||
| @@ -18,7 +23,10 @@ class PingCommand(DiscordCommandABC): | |||||||
|             message_service: MessageServiceABC, |             message_service: MessageServiceABC, | ||||||
|             bot: DiscordBotServiceABC, |             bot: DiscordBotServiceABC, | ||||||
|             client_utils: ClientUtilsServiceABC, |             client_utils: ClientUtilsServiceABC, | ||||||
|             translate: TranslatePipe |             translate: TranslatePipe, | ||||||
|  |             permissions: PermissionServiceABC, | ||||||
|  |             base_helper: BaseHelperABC, | ||||||
|  |             servers: ServerRepositoryABC, | ||||||
|     ): |     ): | ||||||
|         DiscordCommandABC.__init__(self) |         DiscordCommandABC.__init__(self) | ||||||
|  |  | ||||||
| @@ -27,13 +35,34 @@ class PingCommand(DiscordCommandABC): | |||||||
|         self._bot = bot |         self._bot = bot | ||||||
|         self._client_utils = client_utils |         self._client_utils = client_utils | ||||||
|         self._t = translate |         self._t = translate | ||||||
|  |         self._permissions = permissions | ||||||
|  |         self._base_helper = base_helper | ||||||
|  |         self._servers = servers | ||||||
|  |  | ||||||
|         self._logger.trace(__name__, f'Loaded command service: {type(self).__name__}') |         self._logger.trace(__name__, f'Loaded command service: {type(self).__name__}') | ||||||
|  |  | ||||||
|  |     @staticmethod | ||||||
|  |     def _get_ping(url: str) -> float: | ||||||
|  |         from icmplib import ping | ||||||
|  |         ping_result = ping(url, count=4, interval=0.2, privileged=False) | ||||||
|  |         return ping_result.avg_rtt | ||||||
|  |  | ||||||
|     @commands.hybrid_command() |     @commands.hybrid_command() | ||||||
|     @commands.guild_only() |     @commands.guild_only() | ||||||
|     @CommandChecks.check_is_ready() |     @CommandChecks.check_is_ready() | ||||||
|     async def ping(self, ctx: Context): |     async def ping(self, ctx: Context): | ||||||
|         self._logger.debug(__name__, f'Received command ping {ctx}') |         self._logger.debug(__name__, f'Received command ping {ctx}') | ||||||
|  |         if self._permissions.is_member_technician(ctx.author): | ||||||
|  |             embed = discord.Embed( | ||||||
|  |                 title=self._t.transform('modules.base.info.title'), | ||||||
|  |                 description=self._t.transform('modules.base.info.description'), | ||||||
|  |                 color=int('ef9d0d', 16) | ||||||
|  |             ) | ||||||
|  |             server = self._servers.get_server_by_discord_id(ctx.guild.id) | ||||||
|  |             settings: BaseServerSettings = self._base_helper.get_config(server.discord_server_id) | ||||||
|  |             for server in settings.ping_urls: | ||||||
|  |                 embed.add_field(name=server, value=f'{self._get_ping(server)} ms', inline=False) | ||||||
|  |             await self._message_service.send_ctx_msg(ctx, embed) | ||||||
|  |         else: | ||||||
|             await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.base.pong')) |             await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.base.pong')) | ||||||
|         self._logger.trace(__name__, f'Finished ping command') |         self._logger.trace(__name__, f'Finished ping command') | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ class BaseServerSettings(ConfigurationModelABC): | |||||||
|         self._afk_command_channel_id: int = 0 |         self._afk_command_channel_id: int = 0 | ||||||
|         self._help_command_reference_url: str = '' |         self._help_command_reference_url: str = '' | ||||||
|         self._help_voice_channel_id: int = 0 |         self._help_voice_channel_id: int = 0 | ||||||
|  |         self._ping_urls = List(str) | ||||||
|  |  | ||||||
|     @property |     @property | ||||||
|     def id(self) -> int: |     def id(self) -> int: | ||||||
| @@ -51,6 +52,10 @@ class BaseServerSettings(ConfigurationModelABC): | |||||||
|     def help_voice_channel_id(self) -> int: |     def help_voice_channel_id(self) -> int: | ||||||
|         return self._help_voice_channel_id |         return self._help_voice_channel_id | ||||||
|  |  | ||||||
|  |     @property | ||||||
|  |     def ping_urls(self) -> List[str]: | ||||||
|  |         return self._ping_urls | ||||||
|  |  | ||||||
|     def from_dict(self, settings: dict): |     def from_dict(self, settings: dict): | ||||||
|         try: |         try: | ||||||
|             self._id = int(settings['Id']) |             self._id = int(settings['Id']) | ||||||
| @@ -62,6 +67,8 @@ class BaseServerSettings(ConfigurationModelABC): | |||||||
|             self._afk_command_channel_id = settings['AFKCommandChannelId'] |             self._afk_command_channel_id = settings['AFKCommandChannelId'] | ||||||
|             self._help_command_reference_url = settings['HelpCommandReferenceUrl'] |             self._help_command_reference_url = settings['HelpCommandReferenceUrl'] | ||||||
|             self._help_voice_channel_id = settings['HelpVoiceChannelId'] |             self._help_voice_channel_id = settings['HelpVoiceChannelId'] | ||||||
|  |             for url in settings['PingURLs']: | ||||||
|  |                 self._ping_urls.append(url) | ||||||
|         except Exception as e: |         except Exception as e: | ||||||
|             Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {type(self).__name__} settings') |             Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {type(self).__name__} settings') | ||||||
|             Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') |             Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user