Commit Graph

1077 Commits

Author SHA1 Message Date
e52532c06e Fix File not using the filename if given 2017-04-08 13:31:40 -04:00
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
e5c5695399 Proper recursion when launching shards. 2017-04-07 23:23:48 -04:00
bcfb31779d Fix KeyError in certain logging cases. 2017-04-07 23:22:44 -04:00
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
af0ba17885 Proper termination of HistoryIterator.flatten. 2017-03-30 03:27:44 -04:00
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
e1c32626ba [commands] Fix User converter not working with IDs. 2017-03-27 20:08:26 -04:00
5c5e7ae1d6 [commands] Add is_owner check and Bot.is_owner. 2017-03-27 06:55:21 -04:00
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
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
e749b19131 Remove unnecessary shielding.
This was causing the exception to be suppressed and print 'NoneType'
instead.
2017-03-25 03:30:49 -04:00
fde35848f6 Make Role.members use a list comprehension. 2017-03-25 00:47:51 -04:00
b88658f42f Allow Emoji to be used in a weakref. 2017-03-24 21:50:19 -04:00
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
46951e27f7 Revert "Reference the ConnectionState by weakref."
This reverts commit 730a0e2d53.
2017-03-24 21:44:33 -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
9fcbe5c678 Sort Guild.text_channels and Guild.voice_channels in UI order. 2017-03-23 19:34:36 -04:00
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
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
8a34c412ed Add Permissions.view_audit_log 2017-03-21 19:39:06 -04:00
31a7093433 [commands] Fix minor spacing issue in Command.signature 2017-03-21 15:36:52 -04:00
fd62c8a4f1 Aggregate shard closing futures instead of doing them sequentially. 2017-03-21 03:52:24 -04:00
5461bfb475 Check if we're closed before attempting to do a reconnect. 2017-03-21 03:32:09 -04:00
a0cdb19c5f Eventual consistency fixes. 2017-03-21 03:16:30 -04:00
3087600c8d [commands] Add Command.signature
This replaces HelpFormatter.get_command_signature for the most part.
2017-03-21 00:46:13 -04:00
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
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
c90e52450a Reconnect on any OSError. 2017-03-20 15:45:44 -04:00
4ffded622a Removing acking on channels. 2017-03-18 11:52:18 -04:00
df0f1bfbdf Fix Client inability to shard by actually propagating the shard_id 2017-03-16 05:51:11 -04:00
0321558dec Handle case when guild owner somehow doesn't exist in permissions_for 2017-03-15 23:13:28 -04:00
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
c089aa199b Remove Message.edited_timestamp in favour of Message.edited_at 2017-03-14 19:07:08 -04:00
1239e88d05 Handle aware datetimes in embeds. 2017-03-13 17:47:46 -04:00
9c6d9f1a84 Remove call handling for now. 2017-03-13 17:07:33 -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
ead18e3948 Fix issue with members not copying correctly. 2017-03-05 07:48:15 -05:00
96a43fa9e3 Fix NameError in Role.edit 2017-03-05 06:48:18 -05:00
76e76f2905 Add underscore to HTTPClient.session to imply privateness. 2017-03-04 23:27:57 -05:00
c4c17351c6 Add commit number to pip version for easy identification. 2017-03-04 20:43:05 -05:00
aa41101237 Remove Client.accept_invite 2017-03-04 20:42:21 -05:00
98cfb53d3b [commands] Add Context.me property. 2017-03-01 18:58:56 -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
e78a5c0643 Remove remaining voice_member tracking. 2017-02-28 18:29:27 -05:00
39d65305a3 Add TextChannel.members to get members that can see a channel. 2017-02-28 17:42:07 -05:00
cf40e94af6 Rename VoiceChannel.voice_members to VoiceChannel.members 2017-02-28 17:40:17 -05:00
aa59762c04 Remove extra space. 2017-02-28 17:39:59 -05:00