Commit Graph
100 Commits
Author SHA1 Message Date
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
Rapptz ce34713c45 [commands] Do not take up 'command' keyword-argument in Context.invoke.
It was annoying when commands would have a keyword-only argument
named 'command', such as a help command or a disable command.
2017-06-27 04:58:20 -04:00
Rapptz ad20e3066e [commands] Add parameter that failed in fall-back BadArgument error. 2017-06-26 18:13:46 -04:00
Rapptz 649e4de149 Add Reaction.__str__ 2017-06-26 01:27:09 -04:00
Rapptz 723e392c95 Properly sort roles and discard everyone role in Member.colour. 2017-06-24 20:55:47 -04:00
Rapptz 4ee90cd6e4 Fix missing lazy logging format calls.
Not sure how I missed these.
2017-06-24 20:52:19 -04:00
Rapptz 72780e7737 Actually expose Message.webhook_id. 2017-06-24 20:26:58 -04:00
Rapptz 3618f51f97 [commands] Ensure that Context.command is the command in Command.can_run
Previously, Context.command was not guaranteed to be the actual command
being checked if it can run. This could be troublesome when
implementing help commands or when using the default help command.

This new change allows at least for the guarantee that Context.command
to be technically correct in Command.can_run.
2017-06-21 02:30:24 -04:00
Rapptz c23ef9e8a4 [commands] Add __global_check_once to list of cog functions. 2017-06-20 23:55:17 -04:00
Rapptz 717f11d635 [commands] Add Bot.check_once for a global check that is called once.
There is a counterpart for this in cogs, called __global_check_once.
This allows for predicates that would filter a command globally that
do not necessarily require rechecking in the case of e.g. the help
command such as blocking users or blocking channels.
2017-06-20 23:41:13 -04:00
Rapptz 06c99533de Fix passing None to afk_channel in Guild.edit. 2017-06-19 04:22:42 -04:00
Rapptz 7d001ef46e [commands] Try to use the proper name when conversion fails. 2017-06-17 21:16:10 -04:00
Rapptz 851d4ce22a Properly quote reason header so non-ASCII works in audit log reasons. 2017-06-17 01:04:38 -04:00
Rapptz 15edfc2b26 Make checking for truth-ness of EmbedProxy easier. 2017-06-16 22:17:24 -04:00
Rapptz e62e2c7cc6 [commands] Fix cog error detection in the default global error handler. 2017-06-13 23:51:11 -04:00
Rapptz 7d6435fa9c [commands] Don't display default error handler if a cog local exists. 2017-06-12 17:44:05 -04:00
Rapptz efe8fbf6ed Fix format string in documentation. 2017-06-12 17:39:12 -04:00
Rapptz c1dad43f9d Downgrade PartialReactionEmoji to str in non-raw reaction events. 2017-06-09 22:01:31 -04:00
Rapptz b06899e7d4 Defer logging formatting until the logger is actually called.
This would cause unnecessary format calls even if you didn't have
logging enabled.
2017-06-09 18:53:24 -04:00
Rapptz d239cc2666 Implement "partial" message events.
These are events that get triggered regardless of the state of the
message cache. Useful for getting data from before the bot was booted.
2017-06-09 18:36:59 -04:00
Rapptz 0f7c1e09b0 Fix mixed order in migrating docs. 2017-06-05 23:15:29 -04:00
Rapptz 83dc93559c [commands] Add docstrings for extension loading. 2017-06-05 22:55:57 -04:00
Rapptz 1cf50f8054 Fix AuditLogDiff.__iter__ to return an actual iterable.
Fixes #589.
2017-06-04 20:32:09 -04:00
Rapptz 6135d4cd45 Fix typing/history showing up twice in the documentation. 2017-06-03 02:46:20 -04:00
Rapptz bef636e1e3 Fix mistake in migrating docs. 2017-06-02 16:51:58 -04:00
Rapptz daf066dd39 Log when a player's after function fails. 2017-06-02 06:43:33 -04:00
Rapptz a18267ca49 Fix FAQ to showcase that there is a single parameter, the error. 2017-06-02 06:25:39 -04:00