Commit Graph
437 Commits
Author SHA1 Message Date
Rapptz 6556392a9c [commands] Fix error where consume rest would not work.
I didn't end up refactoring this piece of work out.
2016-06-23 20:17:19 -04:00
Rapptz 629c24339b [commands] Fix bug that made functions stop working as converters. 2016-06-23 18:36:41 -04:00
Rapptz e64eb08c92 [commands] Port special cased discord converters to commands.Converter 2016-06-22 20:05:37 -04:00
Rapptz 880ca3162e [commands] Add commands.Converter base for converts with context.
This allows users to implement converters that work similar to the ones
special cased by the `discord` classes.
2016-06-22 19:06:25 -04:00
Rapptz 324d10c9d9 [commands] Add Command.ignore_extra attribute to ignore extra arguments
This allows you to strictly require a number of arguments. The default
behaviour in this case is still `True`, since it would be a breaking
change otherwise and is a sane default. However if someone would want
to set this to `False`, they would receive an exception of type
`TooManyArguments` if too many arguments are passed to a command.

Hopefully this removes the uses of `ctx.message.content == 'stuff'`
inside commands.
2016-06-20 21:38:17 -04:00
Rapptz adbf2c720f [commands] Add the concept of global checks.
Global checks are checks that are executed before regular per-command
checks except done to every command that the bot has registered. This
allows you to have checks that apply to every command without having to
override `on_message` or appending the check to every single command.
2016-06-19 22:15:11 -04:00
Rapptz 6f173cc095 [commands] Add delete_after keyword argument to utility functions.
This includes things like `Bot.say`, `Bot.upload`, `Bot.whisper`,
and `Bot.reply`.
2016-06-19 19:43:49 -04:00
Rapptz 183e7341f6 [commands] Add Context.cog property. 2016-06-16 05:42:28 -04:00
Rapptz 4dbac9423d [commands] Only show CommandNotFound on non-empty commands. 2016-06-14 01:35:35 -04:00
Rapptz 5f9ed8c9d2 [commands] Make the CommandError required argument optional again. 2016-06-10 23:50:17 -04:00
Rapptz bde266bbb9 [commands] Fix @everyone elevation in the default help command. 2016-06-10 21:31:11 -04:00
Rapptz 1228159f30 [commands] Fix bug with Context.command not updating in groups.
This happened when `invoke_without_command` was set to True.
2016-06-10 21:05:42 -04:00
Rapptz 74cfc53bc8 [commands] Make it so CommandError does not contain @everyone mentions.
Mitigates some permission elevation issues.
2016-06-10 20:40:35 -04:00
Rapptz 43bbecd519 [commands] Exceptions raised while invocation raise CommandInvokeError.
This change should make it a bit more intuitive to get the original
exception without having the gotcha of checking ``isinstance`` inside
the error handler.
2016-06-10 20:32:05 -04:00
Rapptz a0f37f8e85 [commands] Fix issue with proper local error handlers not beign called. 2016-06-10 01:07:03 -04:00
Rapptz b9c7b05176 [commands] Unify Command.handle_local_error into general dispatcher. 2016-06-05 00:35:27 -04:00
Rapptz 661645ac97 [commands] Add Command.qualified_name to get the full command name.
This also sets `__str__` to do the same thing.
2016-06-04 22:31:00 -04:00
Rapptz 37dfe38af5 [commands] Fix bug where Context.command would not update. 2016-06-04 22:29:50 -04:00
Rapptz 9d9a20c128 [commands] Fix bug where subgroups would be repeatedly called.
This happened due to not resetting the `invoked_subcommand` state
tracking. Since the `invoked_subcommand` was not reset, it would always
assume that it was valid and repeatedly call it when passed invalid
subcommands/arguments.
2016-06-04 22:04:05 -04:00
Rapptz 24a9da04db [commands] Cleanup Command.invoke code due to exception propagation. 2016-06-04 21:41:01 -04:00
Khazhismel KumykovandRapptz 33a69681fc [commands] Dispatch command_error on command exec error.
Provide fallback on_command_error - will only fire if no cog handlers and
no local handler.
Propagate exceptions in checks and argument parsing to bot.
2016-06-04 21:22:10 -04:00
Rapptz 20e86973ea [commands] Delete frame objects when done using them. 2016-05-31 23:22:53 -04:00
Rapptz 3c8fcd3584 [commands] Add support for self-bots. 2016-05-31 20:30:17 -04:00
Rapptz fdaa4299a3 [commands] Fix when_mentioned when handling nicknames. 2016-05-01 07:06:19 -04:00
Rapptz 7f09acf871 [commands] Allow role mentions to work with discord.Role params.
This also fixes the Member regex to support the new <@!user_id> syntax
and allows colours to have a leading # before the number.
2016-04-29 08:45:12 -04:00
Rapptz 1c623ccf11 Begin working on gateway v4 support.
Bump websockets requirement to v3.1

Should be squashed...
2016-04-27 18:36:13 -04:00
Rapptz e0ca746ad4 [commands] Make sure that mentions are the entire string. 2016-04-23 02:13:34 -04:00
Rapptz 054c9c7109 [commands] CommandError derived exceptions in checks don't crash help. 2016-04-13 14:25:45 -04:00
Rapptz 82b2421ac7 [commands] Add deterministic cog unloading.
The special function is `__unload` to prevent with name conflicts with
existing or future cogs.
2016-04-04 04:45:15 -04:00
Rapptz 4451091c91 [commands] Fix pagination logic a little inside HelpFormatter.
This should prevent pages accidentally reaching >2k chars.
2016-04-02 08:15:34 -04:00
Rapptz d79a13d7bc [commands] Refactor special cased discord.py converters.
Code is a little more straightforward. The Member and Channel special
cases will now work in private message contexts when given a name. The
Member special case will also work if you pass in a name and
discriminator combo.
2016-04-01 07:27:39 -04:00
Rapptz c015e492d7 [commands] Don't yield from inside bot utility functions. 2016-03-31 20:09:20 -04:00
Will TekulveandRapptz 174016c918 [commands] Fix infinite recursion on subgroups without a command.
Just as an FYI, ctx.invoked_subcommand will end up being an instance
    of commands.Group!
2016-03-31 05:34:51 -04:00
Rapptz 050c668eac [commands] Add bot decorators into __all__. 2016-03-11 23:19:05 -05:00
Rapptz 4a1313f00c [commands] Add when_mentioned_or helper to have mentions and prefixes. 2016-03-05 20:10:11 -05:00
Rapptz c0dba0f4f2 [commands] Fix typo in Bot.upload docstring. 2016-03-02 23:27:57 -05:00
Rapptz 6a31f6af1e [commands] Fix NameError in bot_has_permissions. 2016-03-02 23:18:47 -05:00
Rapptz f49dc81adf [commands] bot_has_permissions decorator actually checks for bot. 2016-03-02 21:54:56 -05:00
Rapptz bf2b8744a5 [commands] Do not swallow AttributeErrors raised by the setup function 2016-02-24 15:14:20 -05:00
Rapptz 98090a2a57 [commands] Helper functions now take *args and **kwargs. 2016-02-18 19:42:03 -05:00
Rapptz baf1312d0e [commands] Raise RuntimeError instead of StopIteration. 2016-02-06 01:38:41 -05:00
Rapptz 17e17cade9 [commands] Fix crash when a group has no commands and help is requested 2016-01-30 20:29:58 -05:00
Rapptz 7056a1f0ec [commands] Change signature convention to use POSIX standards. 2016-01-29 21:40:19 -05:00
Rapptz 0466f5965b [commands] Raise TypeError if the name is not a string. 2016-01-29 20:11:22 -05:00
Rapptz 45c6619018 [commands] Context.invoke will now return what the command returns. 2016-01-28 16:44:16 -05:00
Rapptz 1688d513e8 [commands] Context.invoke just invokes a command with no special case.
Previously it would both forward and invoke depending if there were no
kwargs given. Now it just passes in the arguments to another command
without doing any special casing on the no argument case.
2016-01-28 03:24:50 -05:00
Rapptz d8d4c4e843 [commands] Fix typo on HelpFormatter.show_check_failure attribute. 2016-01-27 06:37:31 -05:00
Rapptz 8caadb5f03 [commands] Fix discord.Invite special case handling in parameters.
This led to decorating a lot of things into @asyncio.coroutine.
Unfortunately there's no way to lower the amount of decoration since
coroutines spread like a virus.
2016-01-24 02:18:39 -05:00
Rapptz d013032522 [commands] Allow setting the bot error messages in the help command.
This is to help out those folks that don't speak English.
2016-01-23 04:00:41 -05:00
Rapptz bb5e222f29 [commands] Add Bot.help_attrs to customise the help command.
The help message now uses the invoked_with attribute of the context to
get the name of the command it uses instead of a hardcoded help.
2016-01-23 03:43:54 -05:00