Cog-Creators / Red-DiscordBot

A multi-function Discord bot
https://docs.discord.red
GNU General Public License v3.0
4.83k stars 2.3k forks source link

alias: curly-quote raises UnexpectedQuoteError when command consumes args #3116

Open synrg opened 5 years ago

synrg commented 5 years ago

Command bugs

Command name

alias

What cog is this command from?

alias

What were you expecting to happen?

I aliased a command that consumes args. I expected the aliased command to work with the same arguments that the command itself works with.

What actually happened?

Instead, adding a curly-quote in the alias arguments causes the command to fail with no output.

My successful command with quaggagriff inatcog is:

[p]inat taxon woodhouse’s toad

image

With [p]taxon set as a global alias for [p]inat taxon, my failing command using this alias is:

[p]taxon woodhouse’s toad

The traceback looks like this:

Ignoring exception in on_message
Traceback (most recent call last):
  File "/home/synrg/.local/lib/python3.7/site-packages/discord/client.py", line 270, in _run_event
    await coro(*args, **kwargs)
  File "/home/synrg/.local/lib/python3.7/site-packages/redbot/cogs/alias/alias.py", line 446, in on_message
    await self.maybe_call_alias(message, aliases=aliases)
  File "/home/synrg/.local/lib/python3.7/site-packages/redbot/cogs/alias/alias.py", line 210, in maybe_call_alias
    await self.call_alias(message, prefix, alias)
  File "/home/synrg/.local/lib/python3.7/site-packages/redbot/cogs/alias/alias.py", line 215, in call_alias
    args = self.get_extra_args_from_alias(message, prefix, alias)
  File "/home/synrg/.local/lib/python3.7/site-packages/redbot/cogs/alias/alias.py", line 185, in get_extra_args_from_alias
    word = view.get_quoted_word()
  File "/home/synrg/.local/lib/python3.7/site-packages/discord/ext/commands/view.py", line 174, in get_quoted_word
    raise UnexpectedQuoteError(current)
discord.ext.commands.errors.UnexpectedQuoteError: Unexpected quote mark, '’', in non-quoted string

How can we reproduce this issue?

  1. Write a command, or choose an existing command that consumes args (last arg is * and has one kwarg).
  2. Alias the command. (I assume global makes no difference, but global is what I used.)
  3. Execute the command with a curly-quote in the arguments to prove it works with an argument with a single curly-quote in it.
  4. Execute the command via its alias with a curly-quote in the arguments to show that it breaks with a single curly-quote in it.

Use of any of these quotes probably causes the same error: https://github.com/Rapptz/discord.py/blob/874c2cd3c9ed47fa42eea184b167b8c0c64ea18e/discord/ext/commands/view.py#L30-L48

synrg commented 5 years ago

Seems to be related to https://github.com/Cog-Creators/Red-DiscordBot/issues/3055

keqking commented 3 years ago

Hi, I also ran into this same issue today when one of my admin used Apple smart quote (curly quote) with an aliased command and I saw the error in console logs.