Cog-Creators / Cog-Creators/Red-DiscordBot

alias: curly-quote raises UnexpectedQuoteError when command consumes args

Open
#3,116 2 comments 0 reactions 0 assignees View on GitHub
Category: Cogs - Alias Status: Needs Discussion Type: Bug
Dominant language
Python
Stars
5.7k
Forks
2.5k
Avg merge
6d 16h
Merged PRs (30d)
1

Description

# 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](https://github.com/synrg/quaggagriff) inatcog is:

```
[p]inat taxon woodhouse’s toad
```
![image](https://user-images.githubusercontent.com/1204376/68687586-d3a56100-0543-11ea-9cf0-5a786a7f1875.png)

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:

```python
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

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.