d534a0989e
Properly cleanup of VoiceClients in cache.
2017-04-18 04:09:33 -04:00
3b1b26ffb1
Re-implement voice sending.
...
This is a complete redesign of the old voice code.
A list of major changes is as follows:
* The voice websocket will now automatically reconnect with
exponential back-off just like the regular Client does.
* Removal of the stream player concept.
* Audio now gracefully pauses and resumes when a disconnect is found.
* Introduce a discord.AudioSource concept to abstract streams
* Flatten previous stream player functionality with the
VoiceClient, e.g. player.stop() is now voice_client.stop()
* With the above re-coupling this means you no longer have to
store players anywhere.
* The after function now requires a single parameter, the error,
if any existed. This will typically be None.
A lot of this design is experimental.
2017-04-18 03:49:48 -04:00
e749b19131
Remove unnecessary shielding.
...
This was causing the exception to be suppressed and print 'NoneType'
instead.
2017-03-25 03:30:49 -04:00
4160cd7d12
Set closed state before actually finishing cleaning up.
2017-03-24 20:40:23 -04:00
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
5461bfb475
Check if we're closed before attempting to do a reconnect.
2017-03-21 03:32:09 -04:00
c90e52450a
Reconnect on any OSError.
2017-03-20 15:45:44 -04:00
df0f1bfbdf
Fix Client inability to shard by actually propagating the shard_id
2017-03-16 05:51:11 -04:00
058f1f13eb
Fix premium key being missing in profile endpoint.
2017-03-13 00:26:43 -04:00
d87d4e716f
Retry on more exceptions in auto reconnect code.
2017-03-07 01:12:28 -05:00
aa41101237
Remove Client.accept_invite
2017-03-04 20:42:21 -05:00
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
9d4f3ebb43
Miscellaneous documentation fixes in Client.wait_for
2017-02-23 22:19:07 -05:00
e16a1e583e
Remove Client.email attribute.
...
Use ClientUser.email instead.
2017-02-23 22:13:45 -05:00
b7488d7c6e
Reconnect when a task times out and propagates.
2017-02-19 17:44:27 -05:00
58fa5fdc9a
Add experimental reconnection logic.
2017-02-15 19:10:32 -05:00
8727472b85
Add Client.get_user_profile to get an arbitrary user's profile.
2017-02-10 17:07:08 -05:00
0dac5e3139
Add Client.emojis to get all emojis.
...
This removes the older get_all_emojis generator.
2017-02-10 16:43:33 -05:00
c16a515e50
Fix NameError in Client.get_invite
2017-02-10 00:22:14 -05:00
274e6af0dd
Fix support for instant invites.
2017-02-08 22:47:52 -05:00
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
e77012f4d9
Make all public is_ functions into methods instead of properties.
2017-01-29 20:53:17 -05:00
8c896e9fbc
Re-add Client.wait_until_ready
2017-01-29 20:33:48 -05:00
e5cb7d295c
Replace wait_for_* with a generic Client.wait_for
2017-01-25 22:26:49 -05:00
b876133e87
Add compatibility shim for asyncio.Future creation.
...
Should provide better support for uvloop.
2017-01-25 21:38:50 -05:00
62f43889c0
Remove unused ChannelPermissions namedtuple.
2017-01-25 05:58:15 -05:00
c80cbf1931
Remove Client.__getattr__ and Client.__setattr__ shims.
...
We should use properties instead.
2017-01-25 05:50:35 -05:00
234fd5180f
Optimise attribute access when dispatching.
2017-01-25 05:31:53 -05:00
e1aaf74fa7
Add option to disable auto member chunking.
2017-01-23 07:07:42 -05:00
1ffb2ca7ac
Allow unique invites for Client.create_invite.
2017-01-21 16:23:14 -05:00
ff9f5749e1
Update copyright year to 2017.
2017-01-20 23:19:19 -05:00
fa384f2114
Make ClientUser separate from a regular User.
...
This removes Client.edit_profile in favour of ClientUser.edit.
2017-01-19 19:37:11 -05:00
4b6b5bd35e
Remove email/password based login.
2017-01-19 18:32:17 -05:00
33450cd1b6
Fix documentation to properly use Messageable.send
2017-01-13 20:35:44 -05:00
92c1637921
Allow overriding the shard_ids used for initial shard launch.
2017-01-08 02:05:21 -05:00
4bc6625739
Add AutoShardedClient.change_presence.
2017-01-08 01:51:10 -05:00
20041ea756
Implement AutoShardedClient for transparent sharding.
...
This allows people to run their >2,500 guild bot in a single process
without the headaches of IPC/RPC or much difficulty.
2017-01-07 23:19:39 -05:00
808a05ff2d
Move global user cache to a WeakValueDictionary.
2017-01-04 05:16:59 -05:00
98b981848d
Move message creation to a factory method inside ConnectionState.
2017-01-03 09:52:10 -05:00
5e6bfecb07
Move away from StateContext and use ConnectionState directly.
2017-01-03 09:52:10 -05:00
633eacc982
Add permission overwrites to GuildChannel.
2017-01-03 09:52:08 -05:00
a557858742
Remove chunks of the voice code to redesign later.
2017-01-03 09:52:07 -05:00
79a49f9145
Absolute import some circular dependencies to appease Python 3.4.
2017-01-03 09:52:02 -05:00
30394d03f2
Remove no longer used functions in Client.
2017-01-03 09:52:00 -05:00
2c50c18ca3
Change dict value views into lists.
2017-01-03 09:51:59 -05:00
59a0df5f98
Rename try_insert_user to store_user
2017-01-03 09:51:56 -05:00
d1d54a468a
Rename Server to Guild everywhere.
2017-01-03 09:51:54 -05:00
53ab263125
Split channel types.
...
This splits them into the following:
* DMChannel
* GroupChannel
* VoiceChannel
* TextChannel
This also makes the channels "stateful".
2017-01-03 09:51:52 -05:00
044b0824e6
Begin working on the rewrite.
2017-01-03 09:51:47 -05:00
bed2e90e82
Properly propagate loop. Fixes #420 .
2016-12-21 00:06:19 -05:00