Commit Graph

2617 Commits

Author SHA1 Message Date
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
34fd266cf9 [lint] Do log formating lazily
Convert log("fmt" % args) to log("fmt", args) as the latter is lazy and
does not do the formating if the string is never logged.
2018-11-24 22:17:58 -05:00
a0634b3eea [lint] Simplyfy util.valid_icon_size
Remove redundant paranthesis and checks from util.valid_icon_size.
2018-11-24 22:17:58 -05:00
51d626eabe [lint] Remove redundant paranthesis
Remove redundant parenthisis around await expressions.  Left over from
f25091ef.
2018-11-24 22:17:58 -05:00
633192b3cd [lint] Replace equality comparisons to singletons
Restrict the values accepted by comparisons with booleans to be actual
booleans.

Minor breaking of undocumented behaviour in permissions; the value to
set bits to must be booleans (as indicated by the type error thrown).
2018-11-24 22:17:57 -05:00
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
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
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
860d6a9ace Revert "Rework documentation to not duplicate inherited members."
This reverts commit 96981210b3.
2018-10-11 03:42:01 -04:00
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
3727ea9811 Add Guild.splash_url_as 2018-10-11 02:38:52 -04:00
fed01c5e15 Remove outdated note about bot accounts.
They can now delete all emoji
2018-10-11 02:36:46 -04:00
1da6962580 Fix up Guild.create_custom_emoji docstring. 2018-10-03 05:45:55 -04:00
96981210b3 Rework documentation to not duplicate inherited members.
This will probably be reverted in 1 week.
2018-10-03 05:45:30 -04:00
60d86b6c1a Add note regarding MORE_EMOJI in Guild.create_custom_emoji 2018-10-03 14:42:04 +08:00
2f84d05f0b Correct Guild.create_custom_emoji documentation 2018-10-02 21:09:07 +08:00
836ae73040 Add support for AuditLogDiff.slowmode_delay. 2018-09-25 21:56:41 -04:00
45af0c83de [commands] Fix NameError in clean_content converter 2018-09-25 19:48:20 -04:00
e29e3438ec Don't try to close shards if there are none yet. 2018-09-26 02:19:42 +09:00
77239e4f15 Fix NameError and duplicate insertion bug when moving roles. 2018-09-24 23:55:05 -04:00
2721689254 Optimise tight loops in DiscordGateway.received_message
* type(x) is y is faster than isinstance(x, y)
* Re-arrange if-statements for common statements
* Drop handler getattr for most events that don't  use it
2018-09-24 23:22:49 -04:00
095f0ec2fc Optimise some member and user related routines.
* Skip user update if possible
* Drop copy.copy in favour of manual copy

Credit to Hornwitser for these findings.
2018-09-24 22:50:05 -04:00
95d8bb2e85 Change internal representation of roles in Member and Emoji.
Introduce a new internal type, SnowflakeList, which has better memory
footprint over a regular list or set of roles. It is suspected that
there will be a 9x reduction of memory for every Emoji instance and a
48 byte saving per Member instance. However, these savings will
probably only be evident on larger bots.

As a consequence of this change, Member.roles is now computed lazily.

Currently I am not sure if I want to do the initial sorting on the
SnowflakeList for Member, as this comes with a O(n log n) cost when
creating a Member for little purpose since SnowflakeList.has is not
overly relied on. If CPU time becomes an issue this might change.
2018-09-24 22:19:42 -04:00
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
12cb074316 Take the default role property into account when comparing roles. 2018-09-24 20:19:47 -04:00
418048b98a [commands] Fix up Greedy documentation a bit. 2018-09-24 04:22:09 -04:00
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
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
8ef509883a [commands] Properly parse bool when inside a typing.Union 2018-09-20 23:58:34 -04:00
262c0d3a9e Correct note note about editing emoji in Guild.create_custom_emoji.
Remove incorrect note; extension of #1575
2018-09-20 23:45:15 -04:00
9af0e54cd3 Correct ClientException message raised in invocation hooks.
For when the hooks are not coroutines.
2018-09-20 23:43:07 -04:00
2c1ba84346 Add colour attribute for BaseUser 2018-09-16 22:46:05 +08:00
d092c6635b Fix webhook_update from code review 2018-09-15 18:28:57 -04:00
17f9916b03 Simple parser for WEBHOOKS_UPDATE 2018-09-15 18:28:57 -04:00
5c24e69cf2 Fix up the Sphinx strings causing warnings. 2018-09-15 09:54:00 -04:00
0352c80a17 Add support for Discord's slow mode.
Adds the following:

* `slowmode_delay` for `TextChannel.edit`
* `slowmode_delay` attribute for `TextChannel`
2018-09-14 22:55:29 -04:00
21309c2d72 Removed inaccurate note on emoji.py
In the docs, it says ``Note that bot accounts can only edit custom emojis they own.``

But after testing a bit. My bot was able to edit emojis in any guild that had the permissions `manage_roles`. Even if the bot didn't own the guild. Or was the original emoji uploader.

And I don't see any mentions of this in the API server or in the documentation. So I'm unsure how this ended up in here. It's possible I am misunderstanding the whole note. My bad if that's the case.
2018-09-14 22:55:28 -04:00
a4d1599ce9 Change docstrings to raw-strings 2018-09-14 22:55:27 -04:00
3ccbda928e Fix PartialEmoji._as_reaction() for emojis the bot can't see
If the bot has access to the emoji, you can pass anything for its name
and it will work fine. The name is only required to be correct when
adding a reaction where you do not have access to the emoji,
all other cases ignore the name.
2018-08-30 18:33:51 -04:00
b9ef80b0d0 [commands] Prepend mention prefixes in commands.when_mentioned_or 2018-08-28 23:50:57 -04:00
d7218259aa Call Http.start_group() in ClientUser.create_group() 2018-08-28 23:50:55 -04:00
b6824c073e Ensure large guilds are properly appended to the ready state guild list 2018-08-28 23:50:55 -04:00
b3bfec9119 Fix CallMessage.duration calculation 2018-08-28 23:50:54 -04:00
cd218fa6a7 Remove Reaction.users "Python 3.4 usage" section
Remove nonsensical "Python 3.4" usage section from Reaction.users().
Left behind from f25091ef.
2018-08-28 23:50:52 -04:00
deda5c4e97 Fix behavior of reaction type-conversion 2018-08-25 14:38:19 -05:00
bd467085bf Fix latency being able to be negative 2018-08-24 21:57:26 -04:00
6d57ddf11b Correct Member.__hash__
Make Member.__hash__ just use whatever its User object's hash impl is.
2018-08-23 19:10:29 -06:00
9bc48b21f5 Fix send_as_json not dispatching socket_raw_send 2018-08-23 20:45:47 -04:00
52e8c06aed Fix typo in core.Command docstring 2018-08-24 06:24:04 +12:00
fdc71695dc [commands] Use eval instead of get_type_hints to resolve typehints
The previous usage of `typing.get_type_hints` caused issues as it would
incorrectly decide to convert annotations into their equivalent
`typing` form -- which is not what we want to happen here.

Due to some use-cases about how setting `Command.callback` work and
the amount of moving parts that have changed due to this patch, it is
probably better to refactor the way it is set so users can have this
use-case handled transparently for them.
2018-08-22 23:16:52 -04:00