| 
							
							
							
						 |  |  | @@ -0,0 +1,141 @@ | 
		
	
		
			
				|  |  |  |  | import datetime | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | from cpl_core.time import TimeFormatSettings | 
		
	
		
			
				|  |  |  |  | from cpl_discord.service import DiscordBotServiceABC | 
		
	
		
			
				|  |  |  |  | from cpl_translation import TranslatePipe | 
		
	
		
			
				|  |  |  |  | from discord.ext import commands | 
		
	
		
			
				|  |  |  |  | from discord.ext.commands import Context, CommandError | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | from cpl_core.logging import LoggerABC | 
		
	
		
			
				|  |  |  |  | from cpl_discord.events.on_command_error_abc import OnCommandErrorABC | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | from bot_core.abc.message_service_abc import MessageServiceABC | 
		
	
		
			
				|  |  |  |  | from bot_core.configuration.bot_settings import BotSettings | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | class BaseOnCommandErrorEvent(OnCommandErrorABC): | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     def __init__( | 
		
	
		
			
				|  |  |  |  |             self, | 
		
	
		
			
				|  |  |  |  |             logger: LoggerABC, | 
		
	
		
			
				|  |  |  |  |             bot: DiscordBotServiceABC, | 
		
	
		
			
				|  |  |  |  |             messenger: MessageServiceABC, | 
		
	
		
			
				|  |  |  |  |             bot_settings: BotSettings, | 
		
	
		
			
				|  |  |  |  |             time_format_settings: TimeFormatSettings, | 
		
	
		
			
				|  |  |  |  |             translate: TranslatePipe | 
		
	
		
			
				|  |  |  |  |     ): | 
		
	
		
			
				|  |  |  |  |         OnCommandErrorABC.__init__(self) | 
		
	
		
			
				|  |  |  |  |         self._logger = logger | 
		
	
		
			
				|  |  |  |  |         self._bot = bot | 
		
	
		
			
				|  |  |  |  |         self._messenger = messenger | 
		
	
		
			
				|  |  |  |  |         self._bot_settings = bot_settings | 
		
	
		
			
				|  |  |  |  |         self._time_format_settings = time_format_settings | 
		
	
		
			
				|  |  |  |  |         self._t = translate | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     async def on_command_error(self, ctx: Context, error: CommandError): | 
		
	
		
			
				|  |  |  |  |         error = getattr(error, 'original', error) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         # Todo: translate error messages !!! | 
		
	
		
			
				|  |  |  |  |         if isinstance(error, commands.MissingRequiredArgument): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Ein benötigter Parameter fehlt!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.ArgumentParsingError): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Parameter konnte nicht gelesen werden!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.UnexpectedQuoteError): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Unerwarteter Zitat Fehler!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.InvalidEndOfQuotedStringError): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Ungültiges Zitatende!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.ExpectedClosingQuoteError): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Erwarte Zitatende!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.BadArgument): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Ungültiger Parameter!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.BadUnionArgument): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Ungültiger Union Parameter!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.PrivateMessageOnly): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Nur private Nachrichten sind erlaubt!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.NoPrivateMessage): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Private Nachrichten sind nicht erlaubt!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.CheckFailure): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Du hast nicht die benötigte Berechtigung!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.CheckAnyFailure): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Alle checks sind Fehlgeschlagen!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.CommandNotFound): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Befehl konnte nicht gefunden werden!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.DisabledCommand): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Befehl wurde deaktiviert!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.CommandInvokeError): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Befehl konnte nicht aufgerufen werden!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.TooManyArguments): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Zu viele Parameter!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.UserInputError): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Eingabefehler!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.CommandOnCooldown): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Befehl befindet sich im cooldown!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.MaxConcurrencyReached): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Maximale Parallelität erreicht!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.NotOwner): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Du bist nicht mein besitzer!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.MissingPermissions): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Berechtigungen fehlen!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.BotMissingPermissions): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Mir fehlen Berechtigungen!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.MissingRole): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Benötigte Rolle fehlt!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.BotMissingRole): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Mir fehlt eine benötigte Rolle!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.MissingAnyRole): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Alle benötigten Rollen fehlen!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.BotMissingAnyRole): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Mir fehlen alle benötigten Rollen!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.NSFWChannelRequired): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: NSFW Kanal benötigt!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.ExtensionError): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Erweiterungsfehler!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.ExtensionAlreadyLoaded): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Erweiterung wurde bereits geladen!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.ExtensionNotLoaded): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Erweiterung wurde nicht geladen!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.NoEntryPointError): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Kein Eintrittspunkt!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         elif isinstance(error, commands.ExtensionFailed): | 
		
	
		
			
				|  |  |  |  |             await self._messenger.send_ctx_msg(ctx, 'Fehler: Erweiterung ist fehlgeschlagen!', without_tracking=True) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         else: | 
		
	
		
			
				|  |  |  |  |             message = self._t.transform('modules.base.technician_command_error_message').format( | 
		
	
		
			
				|  |  |  |  |                 ctx.command, | 
		
	
		
			
				|  |  |  |  |                 ctx.author, | 
		
	
		
			
				|  |  |  |  |                 error, | 
		
	
		
			
				|  |  |  |  |                 datetime.datetime.now().strftime(self._time_format_settings.date_time_format) | 
		
	
		
			
				|  |  |  |  |             ) | 
		
	
		
			
				|  |  |  |  |             for t in self._bot_settings.technicians: | 
		
	
		
			
				|  |  |  |  |                 member = self._bot.get_user(t) | 
		
	
		
			
				|  |  |  |  |                 await self._messenger.send_dm_message(message, member, without_tracking=True) |