288 Commits

Author SHA1 Message Date
Skyweb
84a48c9056 Small inconsistency in documentation
:)
2019-03-08 19:59:20 -05:00
Rapptz
45af9fa40b [commands] Allow passing of typing.Union into Greedy. Fix #1951 2019-03-03 06:24:35 -05:00
Myst(MysterialPy)
63c5892b43 Fix Signature for Greedy/Optional converters
Change Greedy to `[a]...` | `[a=1]...`
2019-03-02 06:16:50 -05:00
Rapptz
076f9bcac7 [commands] Fix name clash overwriting T.__class__.__name__
Fixes #1944
2019-02-28 19:47:25 -05:00
Rapptz
69f5a70eeb [commands] Allow Converter instances in Greedy. Fix #1939. 2019-02-27 21:38:55 -05:00
Rapptz
21a296d538 [commands] Error out when someone passes plain Cog.listener decorator.
Should make this error easier to catch rather than silent failure.
2019-02-27 21:38:55 -05:00
Rapptz
757584e651 [commands] Add support for stacking Cog.listener decorator.
Fix #1926
2019-02-27 04:29:54 -05:00
Rapptz
d5d9164810 [commands] Fix special method detection for regular function objects.
Fixes #1920
2019-02-24 00:24:31 -05:00
Rapptz
3a8214a115 [commands] Remove Bot.get_cog_commands 2019-02-23 11:02:19 -05:00
Rapptz
ab8e7b7732 [commands] Fix bug in behaviour in the cog inspection methods. 2019-02-23 10:51:23 -05:00
Rapptz
7ad4425c57 Update copyright years. 2019-02-23 09:26:39 -05:00
Rapptz
d3bc35a573 [commands] Update stale parent references in subcommands.
This bug was kind of a long one to figure out, as per #1918 documents
the issue had to do with subcommands but the actual adventure in
finding this one was a long one.

The first problem was that Command.cog was for some reason None, which
indicated that a copy was happening somewhere along the way. After some
fiddling I discovered that due to the copies of `Cog.__cog_commands__`
the groups pointed to out-dated versions that got overriden by the new
copies.

The first attempt at fixing this was straightforward -- just remove the
subcommand from the parent and replace it with the newer reference that
we just received. However, this ended up not working due to a strange
mystery where the subcommand being invoked was neither the original
copy nor the new copy residing in `Cog.__cog_commands__`.

Some more investigation later pointed out to me that a copy occurs
during the `Group.copy` stage which calls `Command.copy` for all its
subcommands. After spotting this out I had realised where the
discrepancy comes from. As it turns out, the subcommand copy that was
being invoked was actually a stale one created from `Group.copy`.

The question remained, how come that one was being called? The problem
stemmed from the fact that when the subcommand was copied, the parent
reference pointed to the old parent. Since the old parent was the one
that was getting the new reference, it went practically untouched. This
is because the calling code fetches the child from the parent and the
old parent is nowhere in the call chain.

To fix this issue we needed to update the parent reference, and in
order to do that a temporary lookup table is required pointing to the
latest copies that we have made.

Thus ends a 3.5 hour bug hunting adventure.
2019-02-23 09:26:01 -05:00
Rapptz
9827d6eeaf [commands] Fix issue with decorator order with checks and cooldowns
Now they're just explicitly copied.
2019-02-23 07:41:25 -05:00
Rapptz
10ed41d8a0 [commands] Fix bug with cog bot check once not being unloaded properly. 2019-02-23 07:40:00 -05:00
Rapptz
1a0b1dfd29 [commands] Fix attribute access in cogs to commands.
Previously they were outdated copies, this updates the copies to the
ones that are actually injected.
2019-02-23 07:38:04 -05:00
Rapptz
04ee10adc4 [commands] Fix bug with local checks and cooldowns not applying. 2019-02-23 05:38:35 -05:00
Rapptz
ac6e55353a [commands] Copy on_error handlers in Command.copy
This fixes the issue of error handlers not applying.
2019-02-23 05:31:05 -05:00
Rapptz
f15cf7c845 [commands] Pass over kwargs to type.__new__ 2019-02-23 05:18:24 -05:00
Rapptz
caf3d17d4a Rework entire cog system and partially document it and extensions. 2019-02-23 04:10:10 -05:00
Rapptz
3f06f247c0 [commands] Fix up wording on HelpFormatter.get_ending_note 2019-02-18 16:29:58 -05:00
cod
262717c7d8 [commands] add document comment to HelpFormatter.get_ending_note 2019-02-19 00:27:05 +09:00
cod
ea0f1ee25f [commands] Add more i18n properties for HelpFormatter
removed fixed strings "Commands:" and help page ending note.
and added properties modify these strings.
default behavior is not changed. fix #1886
2019-02-14 20:21:06 -05:00
cod
d107f485a5 [commands] Fix ext.commands help page full-width indentation
add _string_width function to util. Changed string width calculate
function from len() to util function _string_width().
2019-02-06 02:15:04 -05:00
Skyweb
e53c85110f Clarified add_listener documentation 2019-02-06 01:52:57 -05:00
Benjamin Mintz
bb9f153d29 commands.clean_content: escape || spoilers || 2019-02-06 01:52:12 -05:00
Dante Dam
9656a21ebe Bumped copyright years to 2019. 2019-01-28 22:22:50 -05:00
Devon R
e1c94a3b1c Do None instead of falsy checks on Command attributes 2019-01-28 22:22:44 -05:00
MusicOnline
dc8aa7c35b Change Greedy behaviour slightly during conversion errors.
Make Greedy swallow conversion errors and return the default if there
are no convertible args
2019-01-28 21:57:29 -05:00
Dice
bda690c32f [commands] Remove message being required from Role/Member converters.
This allows for easier "mock" context objects, for those who use
converters as utility functions outside of commands, and it's more
straightforward with the rest of the file.
2018-12-14 18:59:47 -05:00
Xua
016963500b [commands] Add support for IDs in the role related checks.
This affects:

* commands.has_role
* commands.has_any_role
* commands.bot_has_role
* commands.bot_has_any_role
2018-11-24 23:02:47 -05:00
Dice
5a585ebf20 Add channel category cooldown bucket type 2018-11-24 22:51:18 -05:00
bmintz
24c0946a93 bot.unload_extension: also allow events with no module
It turns out that events created in an eval command also cause
the issue described in #1506.

Ensure that events we remove are part of a module as well.

Also performs minor comment maintenance
("x", "first y", "then z") -> ("x", "y", "z")
2018-11-24 22:51:16 -05:00
Hornwitser
efb4ff850e [lint] Fix import order
Reorder imports to be consistenly grouped by standard library, third
party library, and local modules in that order thoughout the library.
2018-11-24 22:17:58 -05:00
Hornwitser
ed6451b9da [commands] Remove duplicated quote entries
Remove two duplicated entries from the quote mapping in commands.view.
These were introduced at the creation of this mapping in ea061ef.
2018-11-24 22:17:58 -05:00
Hornwitser
51d626eabe [lint] Remove redundant paranthesis
Remove redundant parenthisis around await expressions.  Left over from
f25091ef.
2018-11-24 22:17:58 -05:00
Hornwitser
fa46b07db1 [lint] Rename exception variables to exc
Use the more explicit (and common) exc instead of e as the variable
holding the exception in except handlers.
2018-11-24 22:17:57 -05:00
Hornwitser
4ae8e81660 [lint] Remove redundant exception variables
Use bare raise statement when reraising the exception that occured, and
remove unused exception variables.  Also remove a pointless exception
handler in discord.opus.
2018-11-24 22:17:57 -05:00
Hornwitser
a71b3b5fa0 [lint] Limit unneccessarily broad except clauses
Add exception qualifier(s) to bare except clauses swallowing exceptions.
2018-11-24 22:17:57 -05:00
Rapptz
860d6a9ace Revert "Rework documentation to not duplicate inherited members."
This reverts commit 96981210b3415e15446db0b702b07fef25c8b680.
2018-10-11 03:42:01 -04:00
Rapptz
e12db3a25d [commands] Add call_once keyword-only parameter for Bot.remove_check
Technically a breaking change. This is to be a parallel with the
Bot.add_check interface.
2018-10-11 02:52:26 -04:00
Rapptz
96981210b3 Rework documentation to not duplicate inherited members.
This will probably be reverted in 1 week.
2018-10-03 05:45:30 -04:00
Rapptz
45af0c83de [commands] Fix NameError in clean_content converter 2018-09-25 19:48:20 -04:00
Rapptz
3d03dbc451 Change internal role storage in Guild to a dict instead of a list.
This adds the following APIs:

* Guild.get_role

This removes the following APIs:

* Guild.role_hierarchy

To compensate for the removed APIs, Guild.roles is now a sorted list
based on hierarchy. The first element will always be the @everyone
role.

This speeds up access at the cost of some memory, theoretically.
2018-09-24 21:08:48 -04:00
Rapptz
418048b98a [commands] Fix up Greedy documentation a bit. 2018-09-24 04:22:09 -04:00
Rapptz
814b03f5a8 [commands] Add commands.Greedy converter and documentation.
This allows for greedy "consume until you can't" behaviour similar to
typing.Optional but for lists.
2018-09-24 03:56:32 -04:00
Rapptz
00a445310b [commands] Allow for backtracking parsing with typing.Optional
Original code by zephyrkul.

This new parsing mode allows for backtracking in case of failure
when a typing.Union[..., NoneType] or a typing.Optional[...] is used.
This means that if a type would fail to parse, the view is undo'd to
a previous state, passing the default parameter to the callback, and
then continuing on the next parameter as if nothing had happened.
2018-09-23 06:12:26 -04:00
zephyrkul
8ef509883a [commands] Properly parse bool when inside a typing.Union 2018-09-20 23:58:34 -04:00
MusicOnline
9af0e54cd3 Correct ClientException message raised in invocation hooks.
For when the hooks are not coroutines.
2018-09-20 23:43:07 -04:00
BeatButton
a4d1599ce9 Change docstrings to raw-strings 2018-09-14 22:55:27 -04:00
zephyrkul
b9ef80b0d0 [commands] Prepend mention prefixes in commands.when_mentioned_or 2018-08-28 23:50:57 -04:00