forked from sh-edraft.de/sh_discord_bot
		
	Reviewed-on: sh-edraft.de/kd_discord_bot#120 Reviewed-by: Ebola-Chan <nick.jungmann@gmail.com> Closes #117
This commit is contained in:
		 Submodule kdb-bot/src/bot/config updated: bd8d3a5dad...58934dde3c
									
								
							| @@ -1,3 +1,4 @@ | ||||
| import discord | ||||
| from cpl_discord.command import DiscordCommandABC | ||||
| from cpl_discord.service import DiscordBotServiceABC | ||||
| 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.helper.command_checks import CommandChecks | ||||
| 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): | ||||
| @@ -18,7 +23,10 @@ class PingCommand(DiscordCommandABC): | ||||
|             message_service: MessageServiceABC, | ||||
|             bot: DiscordBotServiceABC, | ||||
|             client_utils: ClientUtilsServiceABC, | ||||
|             translate: TranslatePipe | ||||
|             translate: TranslatePipe, | ||||
|             permissions: PermissionServiceABC, | ||||
|             base_helper: BaseHelperABC, | ||||
|             servers: ServerRepositoryABC, | ||||
|     ): | ||||
|         DiscordCommandABC.__init__(self) | ||||
|  | ||||
| @@ -27,13 +35,34 @@ class PingCommand(DiscordCommandABC): | ||||
|         self._bot = bot | ||||
|         self._client_utils = client_utils | ||||
|         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__}') | ||||
|  | ||||
|     @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.guild_only() | ||||
|     @CommandChecks.check_is_ready() | ||||
|     async def ping(self, ctx: Context): | ||||
|         self._logger.debug(__name__, f'Received command ping {ctx}') | ||||
|         await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.base.pong')) | ||||
|         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')) | ||||
|         self._logger.trace(__name__, f'Finished ping command') | ||||
|   | ||||
| @@ -18,6 +18,7 @@ class BaseServerSettings(ConfigurationModelABC): | ||||
|         self._afk_command_channel_id: int = 0 | ||||
|         self._help_command_reference_url: str = '' | ||||
|         self._help_voice_channel_id: int = 0 | ||||
|         self._ping_urls = List(str) | ||||
|  | ||||
|     @property | ||||
|     def id(self) -> int: | ||||
| @@ -51,6 +52,10 @@ class BaseServerSettings(ConfigurationModelABC): | ||||
|     def help_voice_channel_id(self) -> int: | ||||
|         return self._help_voice_channel_id | ||||
|  | ||||
|     @property | ||||
|     def ping_urls(self) -> List[str]: | ||||
|         return self._ping_urls | ||||
|  | ||||
|     def from_dict(self, settings: dict): | ||||
|         try: | ||||
|             self._id = int(settings['Id']) | ||||
| @@ -62,6 +67,8 @@ class BaseServerSettings(ConfigurationModelABC): | ||||
|             self._afk_command_channel_id = settings['AFKCommandChannelId'] | ||||
|             self._help_command_reference_url = settings['HelpCommandReferenceUrl'] | ||||
|             self._help_voice_channel_id = settings['HelpVoiceChannelId'] | ||||
|             for url in settings['PingURLs']: | ||||
|                 self._ping_urls.append(url) | ||||
|         except Exception as e: | ||||
|             Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {type(self).__name__} settings') | ||||
|             Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user