Rapptz
47a58d354d
Reimplement zlib streaming.
...
This time with less bugs. It turned out that the crash was due to a
synchronisation issue between the pending reads and the actual shard
polling mechanism.
Essentially the pending reads would be cancelled via a simple bool but
there would still be a pass left and thus we would have a single
pending read left before or after running the polling mechanism and
this would cause a race condition.
Now the pending read mechanism is properly waited for before returning
control back to the caller.
2017-10-14 21:19:46 -04:00
Rapptz
92a37c2e4f
Revert "Implement zlib streaming for the gateway."
...
This reverts commit 462191a08b .
2017-10-14 15:22:39 -04:00
Rapptz
462191a08b
Implement zlib streaming for the gateway.
2017-10-12 22:53:20 -04:00
Rapptz
9b4a2dc7cb
[commands] Minor speed-up for the BucketType.guild case.
...
None case:
344ns ± 24.4ns -> 49.9ns ± 1.39ns
Valid case:
128ns ± 2.76ns -> 42.7ns ± 0.459ns
2017-10-08 07:57:58 -04:00
Rapptz
1bb7b6ff2d
[commands] Make CooldownMapping.get_bucket take Message instead.
...
Requiring a full blown Context might be a bit overkill considering
we only use a single attribute from it.
2017-10-08 07:52:56 -04:00
Rapptz
065f408a10
Move pre-emptive message to DEBUG log level.
2017-10-01 13:43:20 -04:00
Rapptz
711dfb83ab
Allow creating a channel with a category.
2017-09-29 05:54:29 -04:00
Rapptz
6d6ce14d7c
Fix Guild.system_channel always returning None.
...
Fixes #811
2017-09-26 22:56:26 -04:00
Rapptz
f86ac47b28
Don't use Bulk Channel Edit endpoint if not actually moving channels.
...
Should make the category-only edit cases more straightforward since
it does not rely on other guilds in the cache, outside of the category
itself.
2017-09-24 04:55:10 -04:00
Rapptz
148816c4e8
Temporarily add created channels to cache.
...
This should fix issues when doing a `abc.GuildChannel.edit` immediately
afterwards and then when the corresponding CHANNEL_CREATE comes in the
channel instance should hopefully be overwritten by the authoritative
figure, the WebSocket.
2017-09-23 18:54:12 -04:00
Rapptz
54f2c71e71
Fix margins on <p> tags.
2017-09-22 03:11:37 -04:00
Rapptz
458cb83b47
Properly handle cases where a category is removed.
2017-09-21 22:15:47 -04:00
Rapptz
dbf8b5bda6
Fix header size warnings.
2017-09-21 21:16:00 -04:00
Rapptz
e3d69ce83d
Add custom details directive.
2017-09-21 21:15:37 -04:00
Rapptz
8ed5fe472c
More CSS fixes.
2017-09-21 19:38:33 -04:00
Rapptz
2bfd15ba89
Fix weird margins with unordered lists in the HTML5 output.
2017-09-21 18:37:22 -04:00
Rapptz
de6cffa347
Try to build HTML5 for docs.
2017-09-21 18:04:46 -04:00
Rapptz
95c28f08e4
Fix sorting for channels.
2017-09-21 00:11:36 -04:00
Rapptz
025136076a
Add an example for on_reaction_add waiting.
...
Apparently people would rather read examples than the actual
documentation.
2017-09-18 05:46:51 -04:00
Rapptz
5e913b265b
Change how coroutines are detected internally.
2017-09-16 13:35:00 -04:00
Rapptz
305cc3acfa
Clarify VoiceClient.disconnect docs a little more.
2017-09-16 13:29:36 -04:00
Rapptz
7b2e06c263
Fix error when creating guild channels.
2017-09-13 18:47:40 -04:00
Rapptz
e614f6b4cd
[commands] Add CategoryChannelConverter
2017-09-13 17:19:30 -04:00
Rapptz
7df8897e3d
Add Guild.create_category.
...
An alias, Guild.create_category_channel is provided.
2017-09-13 17:01:42 -04:00
Rapptz
53b4890435
Add category support.
...
This adds:
* CategoryChannel, which represents a category
* Guild.by_category() which traverses the channels grouping by category
* Guild.categories to get a list of categories
* abc.GuildChannel.category to get the category a channel belongs to
* sync_permissions keyword argument to abc.GuildChannel.edit to sync
permissions with a pre-existing or new category
* category keyword argument to abc.GuildChannel.edit to move a channel
to a category
2017-09-13 09:44:36 -04:00
Rapptz
e24914be0b
[commands] Fix NameError when given an invalid prefix.
...
Closes #775
2017-09-12 04:22:13 -04:00
Rapptz
3cd1fdc1eb
Document new features for guilds.
2017-09-12 04:21:15 -04:00
Rapptz
1367877d36
Fix crashing for now when a category is created.
...
A full implementation will come later.
2017-09-08 21:30:25 -04:00
Rapptz
8912625428
Fix docstrings for Webhook.send
2017-09-08 04:23:11 -04:00
Rapptz
4564b46f95
Quick start example doesn't respond to ourselves.
2017-09-05 07:03:09 -04:00
Rapptz
21fd94a449
Attempt to change how member functions are detected for Member objects
2017-09-04 20:03:50 -04:00
Rapptz
dcde896e14
Fix __hash__ for Invite objects.
2017-09-04 20:03:07 -04:00
Rapptz
63bca6604b
Manually format reason parameter for kick and ban.
...
Related to: https://github.com/aio-libs/aiohttp/issues/2235
2017-08-30 17:58:53 -04:00
Rapptz
ede1771960
Fix utils.get example.
2017-08-30 01:37:25 -04:00
Rapptz
62df23633a
Sort roles by hierarchy instead of by ID.
...
Fixes #741
2017-08-29 16:24:04 -04:00
Rapptz
63fcfa6d02
[commands] Add CooldownMapping.from_cooldown factory classmethod.
2017-08-27 16:59:04 -04:00
Rapptz
1c967e9a7c
[commands] Export cooldown classes as well.
2017-08-27 16:55:23 -04:00
Rapptz
94e2c0e661
Add upload from URL to the FAQ.
2017-08-25 09:07:30 -04:00
Rapptz
99bd595f5e
Rename webhook parameters to payload to avoid shadowing.
...
The old names clashed with the `json` module.
2017-08-24 22:23:14 -04:00
Rapptz
e7d3085445
Webhook URLs can have dashes and underscores.
2017-08-22 17:52:10 -04:00
Rapptz
8eb6fa0329
Fix multi-part sending with aiohttp in webhooks.
2017-08-22 00:26:43 -04:00
Rapptz
754f3a2ae9
Don't make session a keyword only argument.
2017-08-21 14:57:57 -04:00
Rapptz
84f38b166e
Add atomic keyword argument for member role editing operations.
...
This affects:
* Member.add_roles
* Member.remove_roles
This is the main attempt of fixing long standing bugs like #56 . Since
cache consistency is too hard to ask for due to eventual consistency
and this generally being one of the only main roadblocks that the
cache ruins, it's best to just implement it in terms of the atomic
endpoint instead.
Fixes #56
2017-08-21 10:40:33 -04:00
Rapptz
e5ebea75a9
Lazily fetch Emoji.roles and Emoji.guild to prevent memory leaks.
...
The global emoji cache still managed to somehow cause memory leaks. By
storing IDs directly and lazily evaluating them when needed this
essentially removes all strong references to Guild objects which would
cause an explosion in memory usage.
2017-08-21 06:16:50 -04:00
Rapptz
f1e59ea933
Game objects are really dumb.
2017-08-21 02:49:49 -04:00
Rapptz
b5d987347a
Fix some docstrings.
2017-08-21 02:11:00 -04:00
Rapptz
310cb05040
Fix Webhook.execute alias.
2017-08-21 02:04:44 -04:00
Rapptz
37b0fdb898
Add webhook support.
...
Allows for usage of either `requests` and `aiohttp` when used in
"Standalone" mode.
Fixes #704
2017-08-21 01:57:07 -04:00
Rapptz
deaba1f5ab
Use time.monotonic instead of time.time for heartbeat code.
2017-08-19 22:15:29 -04:00
Rapptz
1c60f9ccf4
Consume remaining keyword arguments in Game constructor.
2017-08-19 12:10:48 -04:00
Rapptz
9a0e9b0494
Update system_content strings for MessageType.new_member.
2017-08-17 18:36:10 -04:00
Rapptz
3b3b8a5150
Remove incorrect extraneous usage of reason keyword argument.
...
Fixes #726
2017-08-17 18:20:28 -04:00
Rapptz
13c6a0a17a
Add support for Guild.system_channel
2017-08-17 18:14:52 -04:00
Rapptz
b8c19954e4
Add default type for Game.
...
Good meme.
2017-08-16 19:36:17 -04:00
Rapptz
0f7482ed6e
Add Client.latency, AutoShardedClient.latency and latencies.
...
This should allow an easier way to query the Discord protocol gateway
latency, defined by the difference HEARTBEAT_ACK between and the last
sent HEARTBEAT.
2017-08-15 23:41:11 -04:00
Rapptz
63231ef033
Remove reason keyword argument from message deletion.
...
Apparently this is unsupported.
Affected functions include:
* abc.Messageable.send
* Message.delete
* TextChannel.delete_messages
* TextChannel.purge
2017-08-15 22:38:43 -04:00
Rapptz
d8360411ea
Fix cases where user_id can be None in audit logs.
2017-08-15 06:12:57 -04:00
Rapptz
fce2ef5534
[commands] Raise when an invalid prefix is given.
...
Fixes #712
2017-08-15 06:12:09 -04:00
Rapptz
434d6dc347
Fix extraneous parentheses in Client.emojis render in migrating docs.
2017-08-12 18:41:21 -04:00
Rapptz
eb673ec2af
[commands] Ensure no mentions escape clean_content
...
Some clever nicknames or role names would lead themselves to
resolving to pings.
2017-08-10 03:17:24 -04:00
Rapptz
cb709cc9da
[commands] Fix clean_content converter not properly escaping mentions.
...
In some cases, the Discord provided role_mentions and mentions array
would be empty, such as wrapping a mention with a backtick or
other frivolous characters. Since we want to completely nullify
mentions, we should not rely on the Discord provided arrays and instead
use and resolve the IDs from the content itself.
2017-08-10 02:46:00 -04:00
Rapptz
be1cffb7c3
Support for discord.Object in Member.remove_roles and Member.add_roles
2017-08-09 18:41:54 -04:00
Rapptz
f554861e68
Make discord.Object hashable.
2017-08-09 18:39:32 -04:00
Rapptz
de65f7309b
Add heartbeat_timeout to the Client options.
...
This setting configures how long before a timeout event is emitted
internally and disconnects the websocket. Since some users were
experiencing issues with the gateway not responding, this should help
mitigate the issue for those with poor PCs.
2017-08-08 21:12:04 -04:00
Rapptz
ceafae0ab2
Add DiscordWebSocket.latency to measure discord heartbeat latency.
2017-08-08 20:35:42 -04:00
Rapptz
e493f1f2f4
Remove Guild.create_invite too since it relies on a default channel.
2017-07-31 21:39:48 -04:00
Rapptz
3dc1195637
Remove Guild.default_channel
...
The concept no longer exists.
2017-07-31 21:32:12 -04:00
Rapptz
9cfa39a1c7
Fix AsyncIterator documentation to properly show coroutines.
2017-07-29 15:26:02 -04:00
Rapptz
51a39b5b1c
Rename avatar_is_animated to is_avatar_animated and make it a method.
2017-07-27 06:26:00 -04:00
Rapptz
fe3b917564
Continue connection loop with back-off if connecting fails >5 times.
2017-07-25 20:00:00 -04:00
Rapptz
5d75c44651
Call cleanup on AudioSource.__del__.
2017-07-19 05:58:20 -04:00
Rapptz
a7f846b37f
[commands] Fix Command.root_parent not properly working.
2017-07-19 05:14:23 -04:00
Rapptz
eda903f6b1
Add some logging for when ffmpeg processes get terminated.
2017-07-18 18:46:56 -04:00
Rapptz
bd4505fec5
[commands] Restart the StringView properly in Context.reinvoke.
...
The old code for some reason assumed that the length of the command
would be 1. This is because when I tested this I would use single
letter command names and it would "just work" when in reality it was
completely incorrect.
A reminder to thoroughly test instead of just fitting something to work
2017-07-18 18:02:06 -04:00
Rapptz
bcaee518a1
[commands] Remove support for pass_context=False in Command.
2017-07-18 17:58:38 -04:00
Rapptz
6e0902ef57
Implement new-style NSFW channels.
...
No idea how these will change in the future but this is barebones
enough for now.
2017-07-18 16:36:26 -04:00
Rapptz
2e57fa6dfd
Don't re-raise in Client.connect if it's a clean close code.
2017-07-14 11:06:00 -04:00
Rapptz
3fbeb94cdb
Expose reverse parameter in TextChannel.purge
2017-07-14 01:13:50 -04:00
Rapptz
8f0dcaa666
Variadic arguments are a tuple not a list.
2017-07-10 20:33:53 -04:00
Rapptz
b3cad74442
Message content is Optional in Message.edit.
2017-07-10 06:14:51 -04:00
Rapptz
1d3bb1f510
Simplify embed timestamp code due to it being fixed Discord side.
...
See https://github.com/hammerandchisel/discord-api-docs/issues/291
2017-07-09 15:52:50 -04:00
Rapptz
6c67910fa9
Remove Invite.accept.
2017-07-08 21:33:04 -04:00
Rapptz
2f97678a79
First pass at commands narrative documentation.
2017-07-08 00:28:23 -04:00
Rapptz
c2544b9101
Handle everyone role having top priority in permission resolution.
...
In Discord, if the @everyone role has an explicit allow but a later
role has an explicit deny, the permission is denied rather than allowed
despite the fact that on Discord, allows have a higher priority than
denies.
This is because the @everyone role is supposed to be the first role to
be applied, while the rest could be applied in an aggregate fashion.
Fixes #630 .
2017-07-07 17:53:38 -04:00
Rapptz
bd67cb5137
Hide constructor for objects that shouldn't be created by users.
2017-07-05 17:30:36 -04:00
Rapptz
b88cc8156c
Accidentally left a print statement.
2017-07-05 00:48:27 -04:00
Rapptz
ea078f1c68
Fix TextChannel.purge not working.
2017-07-04 21:59:44 -04:00
Rapptz
3bd0c2120c
Implement a LRU cache for private channels.
...
Another fix related to the discord issue[1].
[1]: https://github.com/hammerandchisel/discord-api-docs/issues/184
2017-07-04 20:02:17 -04:00
Rapptz
169f3a8322
Don't unnecessarily re-create private channels.
...
New API change[1] will make it so CHANNEL_CREATE will keep getting
sent for private channels, so might as well avoid the overhead of
constantly creating the channel if we can avoid it.
[1]: https://github.com/hammerandchisel/discord-api-docs/issues/184
2017-07-04 20:02:11 -04:00
Rapptz
e0f02f1775
Rename AsyncIterator.get to next to prevent shadowing.
2017-07-04 10:45:38 -04:00
Rapptz
c98443e9aa
Fix wrong order in migrating docs.
2017-07-02 17:49:56 -04:00
Rapptz
8caa088d25
Allow PartialReactionEmoji in add_reaction and remove_reaction.
2017-07-02 01:43:45 -04:00
Rapptz
f607febaf7
Fix Message.remove_reaction and Message.add_reaction taking in Reaction
2017-07-02 01:40:13 -04:00
Rapptz
da6ced72c9
Bump requirements to aiohttp 2.2 and PyNaCl 1.1.2
2017-07-01 16:56:39 -04:00
Rapptz
0b9d402272
[commands] Improve commands.when_mentioned_or documentation.
2017-07-01 16:32:36 -04:00
Rapptz
867d918e30
Add when_mentioned and when_mentioned_or to the documentation.
2017-07-01 16:18:07 -04:00
Rapptz
25a1d8c300
Add support for user flags in Profile.
2017-06-30 18:49:49 -04:00
Rapptz
77f04539b1
Typo in docstring for TextChannel.delete_messages
2017-06-29 20:33:19 -04:00
Rapptz
51429f98e8
Fix typo in migrating page.
2017-06-29 20:25:40 -04:00
Rapptz
64cba11656
Allow TextChannel.delete_messages to take lists of 0 or 1 element.
2017-06-29 14:06:12 -04:00