|
|
|
@@ -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)
|