Rapptz
9885a946e1
More robust cleanup for Client.run.
...
This should prevent asyncio.CancelledError from being propagated more
and suppressed "Task was destroyed but was pending!" warnings when
doing graceful closes outside of using a KeyboardInterrupt.
To make clean up a bit more robust, also add signal handlers
for POSIX systems.
2017-03-24 20:27:30 -04:00
Rapptz
9fcbe5c678
Sort Guild.text_channels and Guild.voice_channels in UI order.
2017-03-23 19:34:36 -04:00
Rapptz
959c60543d
Upgrade aiohttp requirement to 2.0.
...
Apparently this doesn't cause any issues with the existing code as-is.
I suspect the real issue will be with people's third party code.
2017-03-23 17:47:24 -04:00
Rapptz
730a0e2d53
Reference the ConnectionState by weakref instead of a strong reference.
...
Hopefully this means when the bot has some lingering object for
whatever reason, the memory doesn't double due to it having a strong
reference to an outdated connection state.
2017-03-22 00:02:50 -04:00
Rapptz
8a34c412ed
Add Permissions.view_audit_log
2017-03-21 19:39:06 -04:00
Rapptz
31a7093433
[commands] Fix minor spacing issue in Command.signature
2017-03-21 15:36:52 -04:00
Rapptz
fd62c8a4f1
Aggregate shard closing futures instead of doing them sequentially.
2017-03-21 03:52:24 -04:00
Rapptz
5461bfb475
Check if we're closed before attempting to do a reconnect.
2017-03-21 03:32:09 -04:00
Rapptz
a0cdb19c5f
Eventual consistency fixes.
2017-03-21 03:16:30 -04:00
Rapptz
3087600c8d
[commands] Add Command.signature
...
This replaces HelpFormatter.get_command_signature for the most part.
2017-03-21 00:46:13 -04:00
Rapptz
54fdafb792
[commands] Add BotBase.get_cog_commands to get all a cog's commands.
...
Self-explanatory. This should help create help commands for a cog
more easily.
2017-03-21 00:46:12 -04:00
Rapptz
fe588a4d52
[commands] Change GroupMixin.commands to all_commands
...
This is a breaking change as GroupMixin.commands now returns a set
of unique Command objects.
2017-03-21 00:46:12 -04:00
Rapptz
c90e52450a
Reconnect on any OSError.
2017-03-20 15:45:44 -04:00
Rapptz
4ffded622a
Removing acking on channels.
2017-03-18 11:52:18 -04:00
Rapptz
df0f1bfbdf
Fix Client inability to shard by actually propagating the shard_id
2017-03-16 05:51:11 -04:00
Rapptz
0321558dec
Handle case when guild owner somehow doesn't exist in permissions_for
2017-03-15 23:13:28 -04:00
Rapptz
51b0baeb9d
Speed up message update handling.
...
Apparently, checking if something is not None and then calling it is
faster than having an identity function that will just return the
original value untransformed, such as a lambda or doing a str(str) call
2017-03-14 19:12:30 -04:00
Rapptz
c089aa199b
Remove Message.edited_timestamp in favour of Message.edited_at
2017-03-14 19:07:08 -04:00
Rapptz
1239e88d05
Handle aware datetimes in embeds.
2017-03-13 17:47:46 -04:00
Rapptz
9c6d9f1a84
Remove call handling for now.
2017-03-13 17:07:33 -04:00
Rapptz
058f1f13eb
Fix premium key being missing in profile endpoint.
2017-03-13 00:26:43 -04:00
Rapptz
d87d4e716f
Retry on more exceptions in auto reconnect code.
2017-03-07 01:12:28 -05:00
Rapptz
ead18e3948
Fix issue with members not copying correctly.
2017-03-05 07:48:15 -05:00
Rapptz
96a43fa9e3
Fix NameError in Role.edit
2017-03-05 06:48:18 -05:00
Rapptz
76e76f2905
Add underscore to HTTPClient.session to imply privateness.
2017-03-04 23:27:57 -05:00
Rapptz
c4c17351c6
Add commit number to pip version for easy identification.
2017-03-04 20:43:05 -05:00
Rapptz
aa41101237
Remove Client.accept_invite
2017-03-04 20:42:21 -05:00
Rapptz
98cfb53d3b
[commands] Add Context.me property.
2017-03-01 18:58:56 -05:00
Rapptz
5ce88c8a3f
Reconnect even if we close with 1000 since Discord can send it.
...
Rely on is_closed() instead since this is the true metric of a clean
closure.
2017-03-01 05:10:01 -05:00
Rapptz
e78a5c0643
Remove remaining voice_member tracking.
2017-02-28 18:29:27 -05:00
Rapptz
39d65305a3
Add TextChannel.members to get members that can see a channel.
2017-02-28 17:42:07 -05:00
Rapptz
cf40e94af6
Rename VoiceChannel.voice_members to VoiceChannel.members
2017-02-28 17:40:17 -05:00
Rapptz
aa59762c04
Remove extra space.
2017-02-28 17:39:59 -05:00
Rapptz
8daf411c72
Add Messageable.ack
2017-02-28 00:47:37 -05:00
Rapptz
f7524c9919
Add User.is_blocked and User.is_friend shortcut methods.
2017-02-27 23:29:52 -05:00
Rapptz
9a1215e13b
Add support for message acking.
2017-02-27 23:29:52 -05:00
Rapptz
751933f068
Remove nonce when sending messages.
2017-02-27 18:02:07 -05:00
Rapptz
cbbc75cd8d
Move purge and delete_messages from Messageable.
...
This is a breaking change. Move these two to TextChannel since the
other things that implement Messageable cannot reliably do bulk delete
actions in their respective channels.
2017-02-26 21:16:20 -05:00
Rapptz
f6fcb62c7b
Check for PrivateChannel before GuildChannel in Client.get_channel
2017-02-25 20:56:09 -05:00
Rapptz
29f676c42e
Wrap asyncio.wait into a saner alternative that raises TimeoutError.
...
Fixes #494
2017-02-25 00:03:43 -05:00
Rapptz
b2ffeac297
Make Guild.large a property instead of an attribute.
2017-02-24 17:51:27 -05:00
Rapptz
1b3234ab64
Add info logging for close codes we cannot handle.
2017-02-24 17:23:46 -05:00
Rapptz
9d4f3ebb43
Miscellaneous documentation fixes in Client.wait_for
2017-02-23 22:19:07 -05:00
Rapptz
e16a1e583e
Remove Client.email attribute.
...
Use ClientUser.email instead.
2017-02-23 22:13:45 -05:00
Rapptz
0e8b260d45
Fall back to single message delete in Messageable.purge
...
Also make it work on user accounts.
Fixes #456 .
2017-02-23 00:23:40 -05:00
Rapptz
2fe5da836c
Add User.avatar_url_as to convert a user's avatar.
2017-02-22 23:17:52 -05:00
Rapptz
9cb89f019e
[commands] Register cog listeners with the name of the attribute.
2017-02-22 20:11:01 -05:00
Rapptz
67912193ec
Forward keyword arguments in Member.ban
2017-02-21 08:38:33 -05:00
Rapptz
b8727fd463
Fix Client.emojis returning a list of IDs.
2017-02-21 08:38:06 -05:00
Rapptz
702d596af9
Check that the type in Colour and Permissions are int.
2017-02-21 08:19:32 -05:00
Rapptz
b7488d7c6e
Reconnect when a task times out and propagates.
2017-02-19 17:44:27 -05:00
Rapptz
c6d26216a6
[commands] Fix bad logic in command list filtering.
2017-02-18 02:39:03 -05:00
Rapptz
54f297c24f
Fix NameError in GuildChannel.overwrites_for
2017-02-17 22:10:12 -05:00
Rapptz
6516932e67
Fix Guild.bans to return a BanEntry object.
2017-02-16 16:13:20 -05:00
Rapptz
58fa5fdc9a
Add experimental reconnection logic.
2017-02-15 19:10:32 -05:00
Rapptz
a6b180b5ad
Don't RESUME when given sharding related close codes.
2017-02-15 17:58:57 -05:00
Rapptz
bb8f5f4725
Make discord.ext a namespace package.
2017-02-14 21:35:52 -05:00
Rapptz
132ac45010
Ensure after is called inside the daemon thread for players.
2017-02-14 02:10:07 -05:00
Rapptz
6166cbc2e7
[commands] Add commands.clean_content converter.
2017-02-13 22:15:39 -05:00
Rapptz
c8250d7cd5
Fix bug with Message.role_mentions always being empty.
2017-02-13 22:14:49 -05:00
Rapptz
e10cae5dbc
[commands] Allow converters to be instantiated.
...
This allows for you to create converters that can have varying
behaviour using the converter's __init__ instead of having to do a
meta-class based approach to get around the fact that __init__ is part
of the interface.
To make up for the lack of __init__, a new method Converter.prepare was
added to do the work that __init__ used to do.
2017-02-13 21:05:25 -05:00
Rapptz
dcf826c09b
Allow utils.maybe_coroutine to take any arguments.
2017-02-13 20:58:14 -05:00
Rapptz
8e654bd52a
Add support for limit=None in Messageable.history.
...
Fixes #480 .
2017-02-13 19:55:04 -05:00
Rapptz
b6bff5172a
[commands] Remove Commands: if no commands can be run in help command.
2017-02-13 04:27:31 -05:00
Rapptz
1ec7daf372
Documentation fixes for permission.
2017-02-13 02:44:29 -05:00
Rapptz
bf11bb4b4f
[commands] Add cog local error handlers via __error.
2017-02-12 15:48:18 -05:00
Rapptz
7bc3750c27
[commands] Add param attribute to MissingRequiredArgument
...
This should allow easier querying on what argument is missing.
Fixes #470 .
2017-02-12 13:53:49 -05:00
Rapptz
47ef657fbd
Implement async checks. Fixes #380 .
2017-02-12 12:13:23 -05:00
Rapptz
2abdbc70c2
Implement utilities for AsyncIterator.
...
Closes #473 .
2017-02-11 23:34:19 -05:00
Rapptz
8727472b85
Add Client.get_user_profile to get an arbitrary user's profile.
2017-02-10 17:07:08 -05:00
Rapptz
0dac5e3139
Add Client.emojis to get all emojis.
...
This removes the older get_all_emojis generator.
2017-02-10 16:43:33 -05:00
Rapptz
ae36008279
Fix NameError in GroupChannel.
2017-02-10 15:42:52 -05:00
Rapptz
bfe2b4fc03
Fix Member.display_name to work.
2017-02-10 03:10:30 -05:00
Rapptz
c16a515e50
Fix NameError in Client.get_invite
2017-02-10 00:22:14 -05:00
Rapptz
ca81f0c3fc
Better group DM support.
2017-02-09 20:50:02 -05:00
Rapptz
926f01f0b6
Call message edit handlers after attempting to patch individual fields
2017-02-09 06:29:57 -05:00
Rapptz
8c581bc5bd
Removed unused variables in routes.
2017-02-09 02:44:45 -05:00
Rapptz
3504de4635
Fix more places where server is used instead of guild in docstrings.
2017-02-08 22:51:40 -05:00
Rapptz
274e6af0dd
Fix support for instant invites.
2017-02-08 22:47:52 -05:00
Rapptz
0311b407c3
Remove unused constants in HTTPClient
2017-02-08 20:44:35 -05:00
Rapptz
ced064d08c
Add missing continue statement in gateway futures.
2017-02-08 20:30:09 -05:00
Rapptz
ecab8399ff
Handle HEARTBEAT_ACK
2017-02-08 07:23:09 -05:00
Rapptz
dc486980f8
Rewrite RESUME logic to be more in line with what is requested.
...
Apparently we should always try to RESUME first and if we get
INVALIDATE_SESSION then we should IDENTIFY instead. This is the
preferred way to do RESUMEs.
2017-02-08 04:37:16 -05:00
Rapptz
f5b455c119
Only defer the lock if we're pre-emptively rate limiting.
...
If a 429 was already hit somehow then we're no longer pre-emptively
rate limiting and we're going to end up having a race condition in
the lock/unlock cycle.
2017-02-08 03:47:35 -05:00
Rapptz
f8d19ae7ba
[commands] Better support for retrieving children commands.
...
* GroupMixin.get_command now supports fully qualified names
* Add GroupMixin.walk_commands to get an iterator of all commands.
2017-02-06 21:04:33 -05:00
Rapptz
aac769eb56
[commands] Fix converters returning the wrong types when an ID is passed
2017-01-31 04:57:13 -05:00
Rapptz
a632bdd871
Fix Member.permissions_in passing in the wrong self parameter.
2017-01-31 04:53:54 -05:00
Rapptz
5422655a86
Fix parsing of Invite.user
2017-01-30 19:04:25 -05:00
Rapptz
3a24cda927
Faster implementation of Guild.default_channel.
2017-01-29 21:04:42 -05:00
Rapptz
81baafa1e2
Change Role.is_everyone to Role.is_default.
2017-01-29 20:59:36 -05:00
Rapptz
e77012f4d9
Make all public is_ functions into methods instead of properties.
2017-01-29 20:53:17 -05:00
Rapptz
01c17704bc
Remove unused Message._handle_upgrades function.
2017-01-29 20:41:53 -05:00
Rapptz
8c896e9fbc
Re-add Client.wait_until_ready
2017-01-29 20:33:48 -05:00
Rapptz
b27fab09eb
Allow removing an embed in Message.edit
2017-01-29 20:32:24 -05:00
Rapptz
554ae196d3
Add missing int casts in many different events in the state.
...
Also remove redundant role parsing in Member._update_roles.
2017-01-28 08:14:43 -05:00
Rapptz
1c49374210
[commands] Implement before and after invoke command hooks.
...
Fixes #464 .
2017-01-27 18:53:21 -05:00
Rapptz
8fa50a8f3e
[commands] Add Context.command_failed attribute.
2017-01-27 17:14:22 -05:00
Rapptz
1cf7b0e2c8
Add ClientUser.friends and ClientUser.blocked
2017-01-27 00:25:04 -05:00
Rapptz
12c1cd9b14
[commands] Add cog local checks via __local_check
2017-01-26 05:49:24 -05:00
Rapptz
0e1bd1647e
[commands] Rename __check to __global_check for cogs.
2017-01-26 05:31:11 -05:00