1290 Commits

Author SHA1 Message Date
khazhyk
2c4876f2e7 add Guild.icon_url_as
Guild icons can also be up to 1024px, jpg, png, or webp
2017-07-25 06:09:41 -04:00
khazhyk
12ca0d9b16 avatar_url_as improvements
static_format will only apply to static (not animated) avatars. Makes
it easier to grab gif-or-'format' of an avatar. Defaults to 'webp'

This is for a similar usecase to avatar_url_as(format=None), except
one can specify the non-animated format, instead of always using
webp.

add User.avatar_is_animated property.

add validation for avatar_url_as, since invalid arguments result in
a url which will return 415, which can be confusing for a user. (They
just see a blank page)

Discord accepts size=16-2048, but images cap at 1024px, so accept 16-1024
Discord accepts "jpg", "jpeg", "png", "gif", and "webp", *unless* the
avatar is not animated, in which case "gif" is not supported. :\
2017-07-25 06:09:40 -04:00
Juan
ea0c37b538 accept_invite() doesn't exist on rewrite 2017-07-25 06:58:42 -03:00
khazhyk
f1e08cccac Add bulk argument to TextChannel.purge
bulk=False will never use bulk message delete. Useful e.g. for
using the purge interface for deleting the bot's own messages.
2017-07-24 00:11:05 -04:00
khazhyk
62cdfbdbcd Raise in HTTPClient.request when out of retries
Raise after loop completes without returning with most recent values
for r, data. This is a bit less fragile than checking tries < 4, since
changing the retry count requires changing values in multiple places.
(There seemed to already be handling in the 502 retry, tries <= 5,
which always evaluated to true, e.g.)
Previously, once out of retries, we would always return None without
raising.
This won't NameError so long as we make at least one HTTP request.
2017-07-22 20:10:28 -07:00
khazhyk
2850995062 Retry on 500 in HTTPClient.request
Discord official client retries on 500, so worst case scenario, we're
not any worse than the official client which seriously outnumbers us.
2017-07-22 20:10:25 -07:00
Daniel
b532da7906 Fix waiting for resume when calling stop() on AudioPlayer 2017-07-21 18:37:22 -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
Daniel
6f42a5f2ec Fixed broken code
I should have tested it.
2017-07-07 22:09:56 -04:00
khazhyk
fc22d288be [commands] unload cog submodules
When unloading cogs, currently we do not remove submodules from
sys.modules, meaning they will not be reloaded. Removing here
makes new imports reload from file. Of course, any already imported
modules will still hold a reference to the old module, since they
will not re-import it, and will not be forcably unloaded.
2017-07-07 18:02:29 -04:00
Daniel
a037d469d7 Add basic rewrite voice example 2017-07-07 17:55:12 -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
JW
c220b3faa4 Fixed a typo in calls.py
Suggested by libffi-dev-on on Discord. Changed Optiona into Optional
2017-07-04 23:16:16 +03:00
Rapptz
e0f02f1775 Rename AsyncIterator.get to next to prevent shadowing. 2017-07-04 10:45:38 -04:00
khazhyk
94eb938d29 handle Game.name being None
re #221, Game.name can still be None, which will cause TypeError on
str(game).

Currently discord does not treat these weird statuses uniformly, with it
showing as playing a game on mobile, but not playing a game on desktop. It
may be useful to know users are in this weird state.
2017-07-03 23:14:16 -07:00
khazhyk
6c01250c39 [commands] fix unloading incorrect cogs
unload_extension would incorrectly unload cogs/listeners
of other extensions if the name of one was a prefix of
another.
2017-07-03 20:56:04 -07:00
khazhyk
bca72e64d6 [commands] clean up remove_cog documentation
remove_cog always returns None, even if the cog is found.
2017-07-03 19:02:00 -07: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