363 Commits

Author SHA1 Message Date
Harmon
94c0cb0d5c [commands] Add missing word in HelpCommand documentation 2019-06-20 22:52:47 -04:00
Rapptz
671a19a24a [commands] Ensure cooldowns are properly copied. 2019-06-12 23:40:43 -04:00
Rapptz
af4e3ad79b Some documentation touch-ups and missing stuff in the changelog. 2019-06-09 01:24:41 -04:00
Rapptz
991140eebe Replace Enum with an internal one for significant speed improvements.
This has been a massive pain point for me personally due to the poor
design of the Enum class leading to the common use cases used in the
library being significantly slow. Since this Enum is not public facing
in terms of *creation*, I can only implement the APIs that are used
when *accessing* them.

This Enum is a drop-in replacement to the pre-existing enum.Enum class
except it comes with significant speed-ups. Since this is a lot to go
over, I will let the numbers speak for themselves:

In [4]: %timeit enums.try_enum(enums.Status, 'offline')
263 ns ± 34.3 ns per loop (7 runs, 1000000 loops each)
In [5]: %timeit NeoStatus.try_value('offline')
134 ns ± 0.859 ns per loop (7 runs, 10000000 loops each)

In [6]: %timeit enums.Status.offline
116 ns ± 0.378 ns per loop (7 runs, 10000000 loops each)
In [7]: %timeit NeoStatus.offline
31.6 ns ± 0.327 ns per loop (7 runs, 10000000 loops each)

In [8]: %timeit enums.Status.offline.value
382 ns ± 15.2 ns per loop (7 runs, 1000000 loops each)
In [9]: %timeit NeoStatus.offline.value
65.5 ns ± 0.953 ns per loop (7 runs, 10000000 loops each)

In [10]: %timeit str(enums.Status.offline)
630 ns ± 14.8 ns per loop (7 runs, 1000000 loops each)
In [11]: %timeit str(NeoStatus.offline)
253 ns ± 3.53 ns per loop (7 runs, 1000000 loops each)

In [12]: %timeit enums.Status('offline')
697 ns ± 8.42 ns per loop (7 runs, 1000000 loops each)
In [13]: %timeit NeoStatus('offline')
182 ns ± 1.83 ns per loop (7 runs, 10000000 loops each)
2019-06-09 00:06:34 -04:00
NCPlayz
3c9bcc2851 Improve documentation 2019-06-07 19:27:46 -04:00
Dante Dam
92731bbf5f [commands] Fixed extra "only" in dm_only docs 2019-05-19 20:04:42 -07:00
Rapptz
82b54933e2 Add asyncio.Task subclass for better __repr__ for events. 2019-05-19 19:17:29 -04:00
Dante Dam
1fac7a7e71 [commands] Add missing backtick for is_nsfw docs 2019-05-17 15:25:45 -07:00
Rapptz
f74d73327b [commands] Explicitly assign invoked_subcommand to None before invoking
This should fix instances of it not working as expected in nested
groups.
2019-05-11 18:17:57 -04:00
Benjamin Mintz
0a0c43321b [commands] MinimalHelpCommand: add cog description 2019-05-09 06:11:21 -04:00
Rapptz
bdea50e1db [commands] Better note for Command.invoke 2019-05-05 03:15:38 -04:00
Rapptz
40cac30da1 [commands] Fix MessageConverter not inheriting from Converter
Closes #2126
2019-04-29 23:37:27 -04:00
Rapptz
05d4f7f962 [commands] Fix Context.send_help to work with the copied HelpCommand 2019-04-29 00:08:08 -04:00
Rapptz
ad5beed8dd [commands] Copy HelpCommand instances to prevent race conditions.
Fixes #2123

Slight breaking change if someone had an expectation that no copies
were made behind the scene (which is sensible), however writing code
that relies on this expectation is probably buggy anyway.
2019-04-29 00:05:46 -04:00
Rapptz
6dcd68b8d7 [commands] Allow passing current to more cooldown mapping methods.
Also adds a CooldownMapping.update_rate_limit helper function.
2019-04-24 23:26:33 -04:00
Rapptz
5a7b5cd14b [commands] Allow passing of a message to NoPrivateMessage again.
Prevents an accidental breaking change.
2019-04-20 17:28:44 -04:00
Rapptz
188bd4e708 [commands] DM channels are NSFW in commands.is_nsfw check. 2019-04-20 17:27:04 -04:00
Rapptz
919dbcafb3 Consistent use of __all__ to prevent merge conflicts. 2019-04-20 17:20:58 -04:00
Rapptz
c6410ea9ab [commands] Clean docstrings in Command.parents and Command.root_parent 2019-04-20 17:01:01 -04:00
Rapptz
6620fcc038 [commands] Consistently mention inheritance of exceptions. 2019-04-20 16:59:54 -04:00
Vexs
bbf9a42f87 [commands] Add Command.parents
Make command.root_parent use new command.parents property
2019-04-20 16:59:53 -04:00
Vexs
bb3ebc0ebc [commands] Add custom exception classes for built-in checks
Added:
* MissingRole
* BotMissingRole
* MissingAnyRole
* BotMissingAnyRole
2019-04-20 16:45:37 -04:00
Rapptz
4ca934eb22 [commands] Missing an extra ] in the documented return type. 2019-04-19 18:29:12 -04:00
Vexs
dd84773f45 [commands] Allow passing cls to the commands.group decorator 2019-04-19 18:29:11 -04:00
sirtezza451
dbe946a767 [commands] Update default on_command_error 2019-04-18 07:58:28 -04:00
Rapptz
296d4bf580 [commands] Add new MessageConverter to commands prose page. 2019-04-17 22:41:58 -04:00
retke
440db2a568 [commands] Add MessageConverter to fetch messages by URL or ID. 2019-04-17 20:47:21 -04:00
Rapptz
7a1102ccf0 [commands] Use message creation as the reference time in cooldowns 2019-04-14 17:33:56 -04:00
Rapptz
ec7a701ceb [commands] Allow passing reference time to update_rate_limit 2019-04-14 16:57:47 -04:00
Rapptz
6574c97a8b [commands] Support callables in Greedy converter 2019-04-13 07:28:26 -04:00
Rapptz
ac1b9f5628 [commands] Fix lambda converters in non-module contexts.
Not sure why anyone would do this but might as well fix it.
2019-04-13 07:15:54 -04:00
Rapptz
015404b01c [commands] Add versionadded to dm_only 2019-04-12 03:21:49 -04:00
Rapptz
ec1b3434a2 [commands] Fix erroneous string in dm_only check 2019-04-11 00:55:32 -04:00
Dante Dam
aabbd5a446 [commands] Added dm_only check
Raises PrivateMessageOnly on failure.
2019-04-11 00:02:22 -04:00
Rapptz
50dcdac5ca [commands] Fix references in Bot to actually link.
Exceptions can't seem to link due to a bug in Sphinx.
2019-04-10 05:13:30 -04:00
Rapptz
ef0b2a1092 [commands] Properly name heading for ExtensionError 2019-04-10 00:59:02 -04:00
Rapptz
aeabd0761e [commands] Raise TypeError instead of ClientException in some places
Certain decorators and functions expect coroutines and raise an
exception when this is not met. Change these to raise the appropriate
TypeError since they can't actually be handled by the user gracefully
anyway.
2019-04-07 22:31:05 -04:00
Rapptz
47ab24991f [commands] Remove extraneous or 2019-04-06 22:02:58 -04:00
Rapptz
ee81f0614e [commands] Fix HelpCommand.invoked_with when used in events. 2019-04-06 21:33:21 -04:00
Rapptz
9833ea82e2 Add helpers to escape markdown and mentions from text.
Fixes #1673
2019-04-06 20:14:05 -04:00
Rapptz
743a5a218f [commands] Disallow bot_ or cog_ commands or listeners in cogs. 2019-04-06 19:46:22 -04:00
Rapptz
e4de25eaab [commands] Raise BadArgument in ColourConverter when using from_hsv/rgb
Fixes #2043
2019-04-06 19:29:21 -04:00
CapnS
24d3a5a48d Only escape characters as necessary in clean_content
Fixes #1885
2019-04-06 19:19:58 -04:00
NCPlayz
be227ebcf0 Redesign asset retrieval in the library.
Most assets now return a new class named `Asset`. This allows for the
assets to be consistently saved via a `save` method instead of special
casing for `Attachment`.

`AppInfo` is no longer a namedtuple it is a fully documented dataclass,
as well as having the state attached to it.

Fixes #1997
2019-04-06 19:12:50 -04:00
Rapptz
43b44751af [commands] Fix MinimalHelpCommand opening note signature consistency 2019-03-24 14:46:55 -04:00
Rapptz
e567b59fea [commands] Double underscore some attributes. 2019-03-24 14:33:51 -04:00
Rapptz
8c0c410d0e [commands] Add HelpCommand.invoked_with
This fixes an issue where the context invoked_with does not match the
actual invoked with behaviour (e.g. using Context.send_help).
2019-03-24 14:27:37 -04:00
Rapptz
c96642860c [commands] Add Command.cooldown_after_parsing keyword argument.
This controls the behaviour of cooldown execution order. This does
not change the default behaviour however.
2019-03-22 22:23:07 -04:00
Rapptz
64d749a13f [commands] Ensure handlers are copied even during update.
Fix #2001
2019-03-20 22:38:00 -04:00
Rapptz
c30a366106 Try to consistently use "inherit" vs "derive" in documentation. 2019-03-19 09:23:12 -04:00