from discord.ext import commands from discord.ext.commands import Context from tuxbot.cogs.Tags.functions.exceptions import ( UnknownTagException, ExistingTagException, TooLongTagException, ReservedTagException, ) from tuxbot.cogs.Tags.models import Tag def _(x): return x class TagConverter(commands.Converter): async def convert(self, ctx: Context, argument: str): # skipcq: PYL-W0613 arg = argument.lower() tag_row = await Tag.get_or_none(server_id=ctx.guild.id, name=arg) if not tag_row: raise UnknownTagException(_("Unknown tag")) return arg class NewTagConverter(commands.Converter): async def convert(self, ctx: Context, argument: str): # skipcq: PYL-W0613 arg = argument.lower() if len(arg) > 50: raise TooLongTagException( _("Tag must be lower than 50 characters") ) if arg.split(" ")[0] in ctx.bot.get_command("tag").all_commands: raise ReservedTagException( _("This tag name starts with a tag subcommand name") ) tag_row = await Tag.get_or_none(server_id=ctx.guild.id, name=arg) if tag_row: raise ExistingTagException(_("Tag already exists")) return arg