Rapptz
b05d8790fc
Allow using Reaction objects while adding or removing reactions.
2017-04-21 17:32:09 -04:00
Rapptz
83649d7f0a
Support for new member message types.
2017-04-21 03:49:05 -04:00
Rapptz
34c60002bf
Allow setting a default volume in PCMVolumeTransformer.
2017-04-19 17:33:16 -04:00
Rapptz
f5cfc96aaf
Add PCMVolumeTransformer to augment volume of a PCM stream.
...
This also introduces the idea of replacing the VoiceClient.source on
the fly. Note that this internally pauses and resumes the audio
stream.
2017-04-19 17:23:39 -04:00
Rapptz
07d5328873
Add VoiceClient.is_paused to query pause state.
2017-04-19 16:06:45 -04:00
Rapptz
55e63ed87f
Add VoiceClient.source to get the AudioSource being played.
2017-04-19 01:19:39 -04:00
Rapptz
efd6d11e9a
Fix static cut-off when playing.
2017-04-18 22:20:40 -04:00
Rapptz
aa32c384ea
Clean cache when TimeoutError occurs.
2017-04-18 20:13:34 -04:00
Rapptz
f9c2ac9d25
Better handling of VOICE_SERVER_UPDATE.
...
This now sort of respects "Awaiting Endpoint..." waiting. I haven't
actually tested out this case since it's hard to get it. However this
new code does work with the regular connection flow.
2017-04-18 19:05:34 -04:00
Rapptz
b4bc4dfd12
Fix FFmpegPCMAudio not working with spaces in filename.
2017-04-18 16:05:32 -04:00
Rapptz
1fc08bc5a2
Remove unused imports.
2017-04-18 04:22:35 -04:00
Rapptz
d534a0989e
Properly cleanup of VoiceClients in cache.
2017-04-18 04:09:33 -04:00
Rapptz
65bd510df6
Add Guild.voice_client shortcut.
2017-04-18 04:07:05 -04:00
Rapptz
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
Rapptz
38fd0928df
Don't clear state when READY is reached for auto sharded clients.
2017-04-16 02:32:23 -04:00
Rapptz
3983eb3ba5
Support for API v7 error handling.
2017-04-15 19:55:51 -04:00
Rapptz
22150b20b6
Start typing immediately when using async typing context manager.
2017-04-12 21:26:23 -04:00
Rapptz
0e5bf09021
Export missing enums.
2017-04-12 20:20:35 -04:00
Rapptz
728fae9285
Add Guild.explicit_content_filter.
2017-04-12 20:18:28 -04:00
Rapptz
cadf6960b7
Use create_future wrapper for initially created Future.
2017-04-12 19:55:01 -04:00
Rapptz
ac90159c72
Improve logging in more places.
...
This shows the Shard ID in more places, along with a gateway trace and
session ID. Also helps show the RESUME/IDENTIFY/RESUMED/READY flow a
bit more instead of it looking like the connection has zombied out.
2017-04-12 19:43:47 -04:00
Rapptz
3e15f46dcf
[commands] Bot.get_all_emojis no longer exists.
2017-04-12 05:00:50 -04:00
Rapptz
7da0884bfb
[commands] Export missing built-in converters.
2017-04-12 04:46:53 -04:00
Rapptz
982308da3c
Use global user cache to fetch reaction event data.
...
Also make sure it isn't dispatched unless the data meets the integrity
checks (i.e. not None).
2017-04-09 21:37:49 -04:00
Rapptz
580b4baef9
Fix view_audit_log incorrect pluralisation.
2017-04-08 18:05:46 -04:00
Rapptz
bf2066278e
Add support for multiple file attachments.
...
This is a breaking change. No longer does Messageable.send have a
filename keyword argument, instead this is all handled through the
discord.File model. To upload many files you must specify a list
of discord.File objects.
2017-04-08 03:33:21 -04:00
Rapptz
e5c5695399
Proper recursion when launching shards.
2017-04-07 23:23:48 -04:00
Rapptz
bcfb31779d
Fix KeyError in certain logging cases.
2017-04-07 23:22:44 -04:00
Rapptz
ff95258710
Use an asyncio.Event instead of an asyncio.Lock for global rate limits.
...
There were some dead-locking issues that I suspect were due to the
way the global rate limit was handled. This changes it into a simple
Event that allows multiple coroutines to pass through instead of one
by one.
2017-04-01 23:31:32 -04:00
Rapptz
af0ba17885
Proper termination of HistoryIterator.flatten.
2017-03-30 03:27:44 -04:00
Rapptz
7f58853e3a
Keep track of Emoji instances myself.
...
WeakValueDictionary cleans up too late and brings too little benefit.
Also clean up the state when the first READY is encountered for
AutoShardedClient and when any READY is encountered in regular Client.
2017-03-29 04:36:06 -04:00
Rapptz
e1c32626ba
[commands] Fix User converter not working with IDs.
2017-03-27 20:08:26 -04:00
Rapptz
5c5e7ae1d6
[commands] Add is_owner check and Bot.is_owner.
2017-03-27 06:55:21 -04:00
Rapptz
afb64fb5e3
[commands] Remove Command.no_pm for commands.guild_only check.
...
This is a breaking change. The original purpose of no_pm has been
mainly a legacy aspect. They came from a time before checks were a
generalised concept and were never removed. A check is the proper way
to do its behaviour.
2017-03-26 21:41:34 -04:00
Rapptz
cac84e517b
Always overwrite Emoji references in the state.
...
There is potential that when recreating the Emoji list in the
GUILD_EMOJIS_UPDATE event would just fetch from cache and the element
in cache having an out of date Guild reference. This Guild reference
will be kept alive for longer than it should be.
By always overwriting the Emoji reference, this problem goes away.
2017-03-26 18:43:57 -04:00
Rapptz
e749b19131
Remove unnecessary shielding.
...
This was causing the exception to be suppressed and print 'NoneType'
instead.
2017-03-25 03:30:49 -04:00
Rapptz
fde35848f6
Make Role.members use a list comprehension.
2017-03-25 00:47:51 -04:00
Rapptz
b88658f42f
Allow Emoji to be used in a weakref.
2017-03-24 21:50:19 -04:00
Rapptz
aef170d7e0
Fix memory leak by holding on to Emoji references weakly.
...
The library had a memory leak in the case using the global emoji cache.
When the bot would leave the guild, the Emoji would maintain a strong
reference to the Guild keeping them alive along with the entire state
associated with it.
2017-03-24 21:46:32 -04:00
Rapptz
46951e27f7
Revert "Reference the ConnectionState by weakref."
...
This reverts commit 730a0e2d53 .
2017-03-24 21:44:33 -04:00
Rapptz
4160cd7d12
Set closed state before actually finishing cleaning up.
2017-03-24 20:40:23 -04:00
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