Changelog¶
This page keeps a detailed human friendly rendering of what’s new and changed in specific versions.
v2.0.0¶
This does not Show Changes with discord.py 2.0, for a list go to Migrating to 2.0
Bug Fixes¶
New Features¶
v1.7.3¶
Bug Fixes¶
Fix a crash involving guild uploaded stickers
Fix
DMChannel.permissions_for()not havingPermissions.read_messagesset.
v1.7.2¶
Bug Fixes¶
Fix
fail_if_not_existscausing certain message references to not be usable withinabc.Messageable.send()andMessage.reply()(GH-6726)Fix
Guild.chunk()hanging when the user left the guild. (GH-6730)Fix loop sleeping after final iteration rather than before (GH-6744)
v1.7.1¶
Bug Fixes¶
[ext.commands] Fix
Cog.has_error_handlernot working as intended.
v1.7.0¶
This version is mainly for improvements and bug fixes. This is more than likely the last major version in the 1.x series. Work after this will be spent on v2.0. As a result, this is the last version to support Python 3.5. Likewise, this is the last version to support user bots.
Development of v2.0 will have breaking changes and support for newer API features.
New Features¶
Add support for stage channels via
StageChannel(GH-6602, GH-6608)- Add support for
MessageReference.fail_if_not_exists(GH-6484) By default, if the message you’re replying to doesn’t exist then the API errors out. This attribute tells the Discord API that it’s okay for that message to be missing.
- Add support for
Add support for Discord’s new permission serialisation scheme.
Add an easier way to move channels using
abc.GuildChannel.move()Add support for voice regions in voice channels via
VoiceChannel.rtc_region(GH-6606)Add support for
PartialEmoji.url_as()(GH-6341)Add
File.spoiler(GH-6317)Add support for passing
rolestoGuild.estimate_pruned_members()(GH-6538)Allow callable class factories to be used in
abc.Connectable.play()(GH-6478)Add a way to get mutual guilds from the client’s cache via
User.mutual_guilds(GH-2539, GH-6444)PartialMessage.edit()now returns a fullMessageupon success (GH-6309)AuditLogEntryis now hashable (GH-6495)Attachmentis now hashableAdd
Attachment.content_typeattribute (GH-6618)Add support for casting
Attachmenttostrto get the URL.- Add
seedparameter forColour.random(GH-6562) This only seeds it for one call. If seeding for multiple calls is desirable, use
random.seed().
- Add
Add a
utils.remove_markdown()helper function (GH-6573)Add support for passing scopes to
utils.oauth_url()(GH-6568)[ext.commands] Add support for
rgbCSS function as a parameter toColourConverter(GH-6374)[ext.commands] Add support for converting
StoreChannelviaStoreChannelConverter(GH-6603)[ext.commands] Add support for stripping whitespace after the prefix is encountered using the
strip_after_prefixBotconstructor parameter.[ext.commands] Add
Context.invoked_parentsto get the aliases a command’s parent was invoked with (GH-1874, GH-6462)[ext.commands] Add a converter for
PartialMessageunderext.commands.PartialMessageConverter(GH-6308)[ext.commands] Add a converter for
Guildunderext.commands.GuildConverter(GH-6016, GH-6365)- [ext.commands] Add
Command.has_error_handler This is also adds
Cog.has_error_handler
- [ext.commands] Add
[ext.commands] Allow callable types to act as a bucket key for cooldowns (GH-6563)
[ext.commands] Add
linesepkeyword argument toPaginator(GH-5975)[ext.commands] Allow
Noneto be passed toHelpCommand.verify_checksto only verify in a guild context (GH-2008, GH-6446)[ext.commands] Allow relative paths when loading extensions via a
packagekeyword argument (GH-2465, GH-6445)
Bug Fixes¶
Fix mentions not working if
mention_authoris passed inabc.Messageable.send()withoutClient.allowed_mentionsset (GH-6192, GH-6458)- Fix user created instances of
CustomActivitytriggering an error (GH-4049) Note that currently, bot users still cannot set a custom activity due to a Discord limitation.
- Fix user created instances of
Fix
ZeroDivisionErrorbeing raised fromVoiceClient.average_latency(GH-6430, GH-6436)Fix
User.public_flagsnot updating upon edit (GH-6315)Fix
Message.callsometimes causing attribute errors (GH-6390)Fix issue resending a file during request retries on newer versions of
aiohttp(GH-6531)Raise an error when
user_idsis empty inGuild.query_members()Fix
__str__magic method raising when aGuildis unavailable.Fix potential
AttributeErrorwhen accessingVoiceChannel.members(GH-6602)Embedconstructor parameters now implicitly convert tostr(GH-6574)Ensure
discordpackage is only run if executed as a script (GH-6483)[ext.commands] Fix irrelevant commands potentially being unloaded during cog unload due to failure.
[ext.commands] Fix attribute errors when setting a cog to
HelpCommand(GH-5154)[ext.commands] Fix
Context.invoked_withbeing improperly reassigned during areinvoke()(GH-6451, GH-6462)[ext.commands] Remove duplicates from
HelpCommand.get_bot_mapping(GH-6316)[ext.commands] Properly handle positional-only parameters in bot command signatures (GH-6431)
[ext.commands] Group signatures now properly show up in
Command.signature(GH-6529, GH-6530)
Miscellaneous¶
User endpoints and all userbot related functionality has been deprecated and will be removed in the next major version of the library.
Permissionclass methods were updated to match the UI of the Discord client (GH-6476)_and-characters are now stripped when making a new cog using thediscordpackage (GH-6313)
v1.6.0¶
This version comes with support for replies and stickers.
New Features¶
- An entirely redesigned documentation. This was the cumulation of multiple months of effort.
There’s now a dark theme, feel free to navigate to the cog on the screen to change your setting, though this should be automatic.
Add support for
AppInfo.icon_url_as()andAppInfo.cover_image_url_as()(GH-5888)Add
Colour.random()to get a random colour (GH-6067)- Add support for replying via
Message.reply()(GH-6061) This also comes with the
AllowedMentions.replied_usersetting.abc.Messageable.send()can now accept aMessageReference.MessageReferencecan now be constructed by users.Message.to_reference()can now convert a message to aMessageReference.
- Add support for replying via
Add support for getting the replied to resolved message through
MessageReference.resolved.- Add support for role tags.
Guild.premium_subscriber_roleto get the “Nitro Booster” role (if available).Guild.self_roleto get the bot’s own role (if available).Role.tagsto get the role’s tags.Role.is_premium_subscriber()to check if a role is the “Nitro Booster” role.Role.is_bot_managed()to check if a role is a bot role (i.e. the automatically created role for bots).Role.is_integration()to check if a role is role created by an integration.
- Add
Client.is_ws_ratelimited()to check if the websocket is rate limited. ShardInfo.is_ws_ratelimited()is the equivalent for checking a specific shard.
- Add
Add support for chunking an
AsyncIteratorthroughAsyncIterator.chunk()(GH-6100, GH-6082)- Add support for editing and deleting webhook sent messages (GH-6058)
This adds
WebhookMessageas well to power this behaviour.
- Add
PartialMessageto allow working with a message via channel objects and just a message_id (GH-5905) This is useful if you don’t want to incur an extra API call to fetch the message.
- Add
Add
Emoji.url_as()(GH-6162)Add support for
Member.pendingfor the membership gating feature.Allow
colourparameter to takeintinGuild.create_role()(GH-6195)Add support for
presencesinGuild.query_members()(GH-2354)[ext.commands] Add support for
descriptionkeyword argument incommands.Cog(GH-6028)[ext.tasks] Add support for calling the wrapped coroutine as a function via
__call__.
Bug Fixes¶
Raise
DiscordServerErrorwhen reaching 503s repeatedly (GH-6044)Fix
AttributeErrorwhenClient.fetch_template()is called (GH-5986)Fix errors when playing audio and moving to another channel (GH-5953)
Fix
AttributeErrorwhen voice channels disconnect too fast (GH-6039)Fix stale
Userreferences when the members intent is off.Fix
on_user_update()not dispatching in certain cases when a member is not cached but the user somehow is.- Fix
Message.authorbeing overwritten in certain cases during message update. This would previously make it so
Message.authoris aUser.
- Fix
Fix
UnboundLocalErrorfor editingpublic_updates_channelinGuild.edit()(GH-6093)Fix uninitialised
CustomActivity.created_at(GH-6095)[ext.commands] Errors during cog unload no longer stops module cleanup (GH-6113)
[ext.commands] Properly cleanup lingering commands when a conflicting alias is found when adding commands (GH-6217)
Miscellaneous¶
ffmpegspawned processes no longer open a window in Windows (GH-6038)Update dependencies to allow the library to work on Python 3.9+ without requiring build tools. (GH-5984, GH-5970)
Fix docstring issue leading to a SyntaxError in 3.9 (GH-6153)
Update Windows opus binaries from 1.2.1 to 1.3.1 (GH-6161)
Allow
Guild.create_role()to acceptintas thecolourparameter (GH-6195)[ext.commands]
MessageConverterregex got updated to supportwww.prefixes (GH-6002)[ext.commands]
UserConverternow fetches the API if an ID is passed and the user is not cached.[ext.commands]
max_concurrencyis now called before cooldowns (GH-6172)
v1.5.1¶
Bug Fixes¶
Fix
utils.escape_markdown()not escaping quotes properly (GH-5897)Fix moving channels to the end of the channel list (GH-5923)
Fix seemingly strange behaviour in
__eq__forPermissionOverwrite(GH-5929)Fix the bot disconnecting from voice when moving them to another channel (GH-5904)
Fix attribute errors when chunking times out sometimes during delayed on_ready dispatching.
Ensure that the bot’s own member is not evicted from the cache (GH-5949)
Miscellaneous¶
Members are now loaded during
GUILD_MEMBER_UPDATEevents ifMemberCacheFlags.joinedis set. (GH-5930)- [ext.commands]
MemberConverternow properly lazily fetches members if not available from cache. This is the same as having
discord.Memberas the type-hint.
- [ext.commands]
Guild.chunk()now allows concurrent calls without spamming the gateway with requests.
v1.5.0¶
This version came with forced breaking changes that Discord is requiring all bots to go through on October 7th. It is highly recommended to read the documentation on intents, A Primer to Gateway Intents.
API Changes¶
Members and presences will no longer be retrieved due to an API change. See Privileged Intents for more info.
As a consequence, fetching offline members is disabled if the members intent is not enabled.
New Features¶
Support for gateway intents, passed via
intentsinClientusingIntents.Add
Colour.dark_theme()factory method (GH-1584)Add
AllowedMentions.none()andAllowedMentions.all()(GH-5785)Add more concrete exceptions for 500 class errors under
DiscordServerError(GH-5797)Implement
VoiceProtocolto better intersect the voice flow.Add
Guild.chunk()to fully chunk a guild.Add
MemberCacheFlagsto better control member cache. See Member Cache for more info.- Add support for
ActivityType.competing(GH-5823) This seems currently unused API wise.
- Add support for
Add support for message references,
Message.reference(GH-5754, GH-5832)Add alias for
ColourConverterunderColorConverter(GH-5773)Add alias for
PublicUserFlags.verified_bot_developerunderPublicUserFlags.early_verified_bot_developer(GH-5849)[ext.commands] Add support for
require_var_positionalforCommand(GH-5793)
Bug Fixes¶
Fix issue with
Guild.by_category()not showing certain channels.Fix
abc.GuildChannel.permissions_syncedalways beingFalse(GH-5772)Fix handling of cloudflare bans on webhook related requests (GH-5221)
Fix cases where a keep-alive thread would ack despite already dying (GH-5800)
Fix cases where a
Memberreference would be stale when cache is disabled in message events (GH-5819)Fix
allowed_mentionsnot being sent when sending a single file (GH-5835)Fix
overwritesbeing ignored inabc.GuildChannel.edit()if{}is passed (GH-5756, GH-5757)[ext.commands] Fix exceptions being raised improperly in command invoke hooks (GH-5799)
[ext.commands] Fix commands not being properly ejected during errors in a cog injection (GH-5804)
[ext.commands] Fix cooldown timing ignoring edited timestamps.
[ext.tasks] Fix tasks extending the next iteration on handled exceptions (GH-5762, GH-5763)
Miscellaneous¶
Webhook requests are now logged (GH-5798)
Remove caching layer from
AutoShardedClient.shards. This was causing issues if queried before launching shards.Gateway rate limits are now handled.
Warnings logged due to missed caches are now changed to DEBUG log level.
Some strings are now explicitly interned to reduce memory usage.
Usage of namedtuples has been reduced to avoid potential breaking changes in the future (GH-5834)
[ext.commands] All
BadArgumentexceptions from the built-in converters now raise concrete exceptions to better tell them apart (GH-5748)[ext.tasks] Lazily fetch the event loop to prevent surprises when changing event loop policy (GH-5808)
v1.4.2¶
This is a maintenance release with backports from v1.5.0.
Bug Fixes¶
Fix issue with
Guild.by_category()not showing certain channels.Fix
abc.GuildChannel.permissions_syncedalways beingFalse(GH-5772)Fix handling of cloudflare bans on webhook related requests (GH-5221)
Fix cases where a keep-alive thread would ack despite already dying (GH-5800)
Fix cases where a
Memberreference would be stale when cache is disabled in message events (GH-5819)Fix
allowed_mentionsnot being sent when sending a single file (GH-5835)Fix
overwritesbeing ignored inabc.GuildChannel.edit()if{}is passed (GH-5756, GH-5757)[ext.commands] Fix exceptions being raised improperly in command invoke hooks (GH-5799)
[ext.commands] Fix commands not being properly ejected during errors in a cog injection (GH-5804)
[ext.commands] Fix cooldown timing ignoring edited timestamps.
[ext.tasks] Fix tasks extending the next iteration on handled exceptions (GH-5762, GH-5763)
Miscellaneous¶
Remove caching layer from
AutoShardedClient.shards. This was causing issues if queried before launching shards.[ext.tasks] Lazily fetch the event loop to prevent surprises when changing event loop policy (GH-5808)
v1.4.1¶
Bug Fixes¶
Properly terminate the connection when
Client.close()is called (GH-5207)Fix error being raised when clearing embed author or image when it was already cleared (GH-5210, GH-5212)
Fix
__path__to allow editable extensions (GH-5213)
v1.4.0¶
Another version with a long development time. Features like Intents are slated to be released in a v1.5 release. Thank you for your patience!
New Features¶
- Add support for
AllowedMentionsto have more control over what gets mentioned. This can be set globally through
Client.allowed_mentionsThis can also be set on a per message basis via
abc.Messageable.send()
- Add support for
AutoShardedClienthas been completely redesigned from the ground up to better suit multi-process clusters (GH-2654)Add
ShardInfowhich allows fetching specific information about a shard.The
ShardInfoallows for reconnecting and disconnecting of a specific shard as well.Add
AutoShardedClient.get_shard()andAutoShardedClient.shardsto get information about shards.Rework the entire connection flow to better facilitate the
IDENTIFYrate limits.Add a hook
Client.before_identify_hook()to have better control over what happens before anIDENTIFYis done.Add more shard related events such as
on_shard_connect(),on_shard_disconnect()andon_shard_resumed().
- Add support for guild templates (GH-2652)
This adds
Templateto read a template’s information.Client.fetch_template()can be used to fetch a template’s information from the API.Client.create_guild()can now take an optional template to base the creation from.Note that fetching a guild’s template is currently restricted for bot accounts.
- Add support for guild integrations (GH-2051, GH-1083)
Integrationis used to read integration information.IntegrationAccountis used to read integration account information.Guild.integrations()will fetch all integrations in a guild.Guild.create_integration()will create an integration.Integration.edit()will edit an existing integration.Integration.delete()will delete an integration.Integration.sync()will sync an integration.There is currently no support in the audit log for this.
Add an alias for
VerificationLevel.extremeunderVerificationLevel.very_high(GH-2650)Added
VoiceClient.latencyandVoiceClient.average_latency(GH-2535)Add
use_cachedandspoilerparameters toAttachment.to_file()(GH-2577, GH-4095)Add
positionparameter support toGuild.create_category()(GH-2623)Allow passing
intfor the colour inRole.edit()(GH-4057)Add
Embed.remove_author()to clear author information from an embed (GH-4068)Add the ability to clear images and thumbnails in embeds using
Embed.Empty(GH-4053)Add
guild_ready_timeoutparameter toClientand subclasses to control timeouts when theGUILD_CREATEstream takes too long (GH-4112)Add support for public user flags via
User.public_flagsandPublicUserFlags(GH-3999)Allow changing of channel types via
TextChannel.edit()to and from a news channel (GH-4121)Add
Guild.edit_role_positions()to bulk edit role positions in a single API call (GH-2501, GH-2143)Add
Guild.change_voice_state()to change your voice state in a guild (GH-5088)Add
PartialInviteGuild.is_icon_animated()for checking if the invite guild has animated icon (GH-4180, GH-4181)Add
PartialInviteGuild.icon_url_as()now supportsstatic_formatfor consistency (GH-4180, GH-4181)Add support for
user_idsinGuild.query_members()Add support for pruning members by roles in
Guild.prune_members()(GH-4043)[ext.commands] Implement
before_invoke()andafter_invoke()decorators (GH-1986, GH-2502)[ext.commands] Add a way to retrieve
retry_afterfrom a cooldown in a command viaCommand.get_cooldown_retry_after(GH-5195)[ext.commands] Add a way to dynamically add and remove checks from a
HelpCommand(GH-5197)[ext.tasks] Add
Loop.is_runningmethod to the task objects (GH-2540)[ext.tasks] Allow usage of custom error handlers similar to the command extensions to tasks using
Loop.errordecorator (GH-2621)
Bug Fixes¶
Fix issue with
PartialEmoji.urlreads leading to a failure (GH-4015, GH-4016)Allow
abc.Messageable.history()to take a limit of1even ifaroundis passed (GH-4019)Fix
Guild.member_countnot updating in certain cases when a member has left the guild (GH-4021)Fix the type of
Object.idnot being validated. For backwards compatibilitystris still allowed but is converted toint(GH-4002)Fix
Guild.edit()not allowing editing of notification settings (GH-4074, GH-4047)Fix crash when the guild widget contains channels that aren’t in the payload (GH-4114, GH-4115)
Close ffmpeg stdin handling from spawned processes with
FFmpegOpusAudioandFFmpegPCMAudio(GH-4036)Fix
utils.escape_markdown()not escaping masked links (GH-4206, GH-4207)Fix reconnect loop due to failed handshake on region change (GH-4210, GH-3996)
Fix
Guild.by_category()not returning empty categories (GH-4186)Fix certain JPEG images not being identified as JPEG (GH-5143)
Fix a crash when an incomplete guild object is used when fetching reaction information (GH-5181)
Fix a timeout issue when fetching members using
Guild.query_members()Fix an issue with domain resolution in voice (GH-5188, GH-5191)
Fix an issue where
PartialEmoji.idcould be a string (GH-4153, GH-4152)Fix regression where
Member.activitieswould not clear.[ext.commands] A
TypeErroris now raised whentyping.Optionalis used withincommands.Greedy(GH-2253, GH-5068)[ext.commands]
Bot.walk_commandsno longer yields duplicate commands due to aliases (GH-2591)[ext.commands] Fix regex characters not being escaped in
HelpCommand.clean_prefix(GH-4058, GH-4071)[ext.commands] Fix
Bot.get_commandfrom raising errors when a name only has whitespace (GH-5124)[ext.commands] Fix issue with
Context.subcommand_passednot functioning as expected (GH-5198)[ext.tasks] Task objects are no longer stored globally so two class instances can now start two separate tasks (GH-2294)
[ext.tasks] Allow cancelling the loop within
before_loop(GH-4082)
Miscellaneous¶
The
Member.rolescache introduced in v1.3 was reverted due to issues caused (GH-4087, GH-4157)- Some more API requests got a
reasonparameter for audit logs (GH-5086)
- Some more API requests got a
For performance reasons
websocketshas been dropped in favour ofaiohttp.ws.The blocking logging message now shows the stack trace of where the main thread was blocking
The domain name was changed from
discordapp.comtodiscord.comto prepare for the required domain migrationReduce memory usage when reconnecting due to stale references being held by the message cache (GH-5133)
Optimize
abc.GuildChannel.permissions_for()by not creating as many temporary objects (20-32% savings).[ext.commands] Raise
CommandRegistrationErrorinstead ofClientExceptionwhen a duplicate error is registered (GH-4217)[ext.tasks] No longer handle
HTTPExceptionby default in the task reconnect loop (GH-5193)
v1.3.4¶
Bug Fixes¶
Fix an issue with channel overwrites causing multiple issues including crashes (GH-5109)
v1.3.3¶
Bug Fixes¶
- Change default WS close to 4000 instead of 1000.
The previous close code caused sessions to be invalidated at a higher frequency than desired.
Fix
Noneappearing inMember.activities. (GH-2619)
v1.3.2¶
Another minor bug fix release.
Bug Fixes¶
Higher the wait time during the
GUILD_CREATEstream beforeon_readyis fired forAutoShardedClient.on_voice_state_update()now uses the innermemberpayload which should make it more reliable.Fix crashes if
Message.guildisObjectinstead ofGuild.Fix
Webhook.send()returning an empty string instead ofNonewhenwait=False.Fix invalid format specifier in webhook state (GH-2570)
[ext.commands] Passing invalid permissions to permission related checks now raises
TypeError.
v1.3.1¶
Minor bug fix release.
Bug Fixes¶
Fix fetching invites in guilds that the user is not in.
Fix the channel returned from
Client.fetch_channel()raising when sending messages. (GH-2531)
Miscellaneous¶
Fix compatibility warnings when using the Python 3.9 alpha.
Change the unknown event logging from WARNING to DEBUG to reduce noise.
v1.3.0¶
This version comes with a lot of bug fixes and new features. It’s been in development for a lot longer than was anticipated!
New Features¶
Add
Guild.fetch_members()to fetch members from the HTTP API. (GH-2204)Add
Guild.fetch_roles()to fetch roles from the HTTP API. (GH-2208)Add support for teams via
Teamwhen fetching withClient.application_info(). (GH-2239)Add support for suppressing embeds via
Message.edit()Add support for guild subscriptions. See the
Clientdocumentation for more details.Add
VoiceChannel.voice_statesto get voice states without relying on member cache.Add
Guild.query_members()to request members from the gateway.Add
FFmpegOpusAudioand other voice improvements. (GH-2258)Add
RawMessageUpdateEvent.channel_idfor retrieving channel IDs during raw message updates. (GH-2301)Add
RawReactionActionEvent.event_typeto disambiguate between reaction addition and removal in reaction events.Add
abc.GuildChannel.permissions_syncedto query whether permissions are synced with the category. (GH-2300, GH-2324)Add
MessageType.channel_follow_addmessage type for announcement channels being followed. (GH-2314)Add
Message.is_system()to allow for quickly filtering through system messages.Add
VoiceState.self_streamto indicate whether someone is streaming via Go Live. (GH-2343)Add
Emoji.is_usable()to check if the client user can use an emoji. (GH-2349)Add
VoiceRegion.europeandVoiceRegion.dubai. (GH-2358, GH-2490)Add
TextChannel.follow()to follow a news channel. (GH-2367)Add
Permissions.view_guild_insightspermission. (GH-2415)- Add support for new audit log types. See Audit Log Data for more information. (GH-2427)
Note that integration support is not finalized.
Add
Webhook.typeto query the type of webhook (WebhookType). (GH-2441)Allow bulk editing of channel overwrites through
abc.GuildChannel.edit(). (GH-2198)Add
Activity.created_atto see when an activity was started. (GH-2446)Add support for
xsalsa20_poly1305_liteencryption mode for voice. (GH-2463)Add
RawReactionActionEvent.memberto get the member who did the reaction. (GH-2443)Add support for new YouTube streaming via
Streaming.platformandStreaming.game. (GH-2445)Add
Guild.discovery_splash_urlto get the discovery splash image asset. (GH-2482)- Add
Guild.rules_channelto get the rules channel of public guilds. (GH-2482) It should be noted that this feature is restricted to those who are either in Server Discovery or planning to be there.
- Add
Add support for message flags via
Message.flagsandMessageFlags. (GH-2433)Add
User.systemandProfile.systemto know whether a user is an official Discord Trust and Safety account.Add
Profile.team_userto check whether a user is a member of a team.Add
Attachment.to_file()to easily convert attachments toFilefor sending.- Add certain aliases to
Permissionsto match the UI better. (GH-2496)
- Add certain aliases to
Add support for passing keyword arguments when creating
Permissions.- Add support for custom activities via
CustomActivity. (GH-2400) Note that as of now, bots cannot send custom activities yet.
- Add support for custom activities via
Add support for
on_invite_create()andon_invite_delete()events.- Add support for clearing a specific reaction emoji from a message.
Message.clear_reaction()andReaction.clear()methods.on_raw_reaction_clear_emoji()andon_reaction_clear_emoji()events.
Add
utils.sleep_until()helper to sleep until a specific datetime. (GH-2517, GH-2519)[ext.commands] Add support for teams and
Bot.owner_idsto have multiple bot owners. (GH-2239)[ext.commands] Add new
BucketType.rolebucket type. (GH-2201)[ext.commands] Expose
Command.cogproperty publicly. (GH-2360)[ext.commands] Add non-decorator interface for adding checks to commands via
Command.add_checkandCommand.remove_check. (GH-2411)[ext.commands] Add
has_guild_permissionscheck. (GH-2460)[ext.commands] Add
bot_has_guild_permissionscheck. (GH-2460)[ext.commands] Add
predicateattribute to checks decorated withcheck().[ext.commands] Add
check_any()check to logical OR multiple checks.[ext.commands] Add
max_concurrency()to allow only a certain amount of users to use a command concurrently before waiting or erroring.[ext.commands] Add support for calling a
Commandas a regular function.[ext.tasks]
Loop.add_exception_typenow allows multiple exceptions to be set. (GH-2333)[ext.tasks] Add
Loop.next_iterationproperty. (GH-2305)
Bug Fixes¶
Fix issue with permission resolution sometimes failing for guilds with no owner.
Tokens are now stripped upon use. (GH-2135)
Passing in a
nameis no longer required forEmoji.edit(). (GH-2368)Fix issue with webhooks not re-raising after retries have run out. (GH-2272, GH-2380)
Fix mismatch in URL handling in
utils.escape_markdown(). (GH-2420)Fix issue with ports being read in little endian when they should be big endian in voice connections. (GH-2470)
Fix
Member.mentioned_in()not taking into consideration the message’s guild.Fix bug with moving channels when there are gaps in positions due to channel deletion and creation.
Fix
on_shard_ready()not triggering whenfetch_offline_membersis disabled. (GH-2504)Fix issue with large sharded bots taking too long to actually dispatch
on_ready().Fix issue with fetching group DM based invites in
Client.fetch_invite().Fix out of order files being sent in webhooks when there are 10 files.
[ext.commands] Extensions that fail internally due to ImportError will no longer raise
ExtensionNotFound. (GH-2244, GH-2275, GH-2291)[ext.commands] Updating the
Paginator.suffixwill not cause out of date calculations. (GH-2251)[ext.commands] Allow converters from custom extension packages. (GH-2369, GH-2374)
[ext.commands] Fix issue with paginator prefix being
Nonecausing empty pages. (GH-2471)[ext.commands]
Greedynow ignores parsing errors rather than propagating them.[ext.commands]
Command.can_runnow checks whether a command is disabled.[ext.commands]
HelpCommand.clean_prefixnow takes into consideration nickname mentions. (GH-2489)[ext.commands]
Context.send_helpnow properly propagates to theHelpCommand.on_help_command_errorhandler.
Miscellaneous¶
The library now fully supports Python 3.8 without warnings.
Bump the dependency of
websocketsto 8.0 for those who can use it. (GH-2453)Due to Discord providing
Memberdata in mentions, users will now be upgraded toMembermore often if mentioned.utils.escape_markdown()now properly escapes new quote markdown.The message cache can now be disabled by passing
Nonetomax_messagesinClient.The default message cache size has changed from 5000 to 1000 to accommodate small bots.
Lower memory usage by only creating certain objects as needed in
Role.There is now a sleep of 5 seconds before re-IDENTIFYing during a reconnect to prevent long loops of session invalidation.
- The rate limiting code now uses millisecond precision to have more granular rate limit handling.
Along with that, the rate limiting code now uses Discord’s response to wait. If you need to use the system clock again for whatever reason, consider passing
assume_synced_clockinClient.
The performance of
Guild.default_rolehas been improved from O(N) to O(1). (GH-2375)The performance of
Member.roleshas improved due to usage of caching to avoid surprising performance traps.The GC is manually triggered during things that cause large deallocations (such as guild removal) to prevent memory fragmentation.
There have been many changes to the documentation for fixes both for usability, correctness, and to fix some linter errors. Thanks to everyone who contributed to those.
The loading of the opus module has been delayed which would make the result of
opus.is_loaded()somewhat surprising.[ext.commands] Usernames prefixed with @ inside DMs will properly convert using the
Userconverter. (GH-2498)[ext.tasks] The task sleeping time will now take into consideration the amount of time the task body has taken before sleeping. (GH-2516)
v1.2.5¶
Bug Fixes¶
Fix a bug that caused crashes due to missing
animatedfield in Emoji structures in reactions.
v1.2.4¶
Bug Fixes¶
Fix a regression when
Message.channelwould beNone.Fix a regression where
Message.edited_atwould not update during edits.Fix a crash that would trigger during message updates (GH-2265, GH-2287).
Fix a bug when
VoiceChannel.connect()would not return (GH-2274, GH-2372, GH-2373, GH-2377).Fix a crash relating to token-less webhooks (GH-2364).
Fix issue where
Guild.premium_subscription_countwould beNonedue to a Discord bug. (GH-2331, GH-2376).
v1.2.3¶
Bug Fixes¶
Fix an AttributeError when accessing
Member.premium_sinceinon_member_update(). (GH-2213)Handle
asyncio.CancelledErrorinabc.Messageable.typing()context manager. (GH-2218)Raise the max encoder bitrate to 512kbps to account for nitro boosting. (GH-2232)
Properly propagate exceptions in
Client.run(). (GH-2237)[ext.commands] Ensure cooldowns are properly copied when used in cog level
command_attrs.
v1.2.2¶
Bug Fixes¶
Audit log related attribute access have been fixed to not error out when they shouldn’t have.
v1.2.1¶
Bug Fixes¶
User.avatar_urland related attributes no longer raise an error.More compatibility shims with the
enum.Enumcode.
v1.2.0¶
This update mainly brings performance improvements and various nitro boosting attributes (referred to in the API as “premium guilds”).
New Features¶
Add
Guild.premium_tierto query the guild’s current nitro boost level.Add
Guild.emoji_limit,Guild.bitrate_limit,Guild.filesize_limitto query the new limits of a guild when taking into consideration boosting.Add
Guild.premium_subscription_countto query how many members are boosting a guild.Add
Member.premium_sinceto query since when a member has boosted a guild.Add
Guild.premium_subscribersto query all the members currently boosting the guild.- Add
Guild.system_channel_flagsto query the settings for a guild’sGuild.system_channel. This includes a new type named
SystemChannelFlags
- Add
Add
Emoji.availableto query if an emoji can be used (within the guild or otherwise).Add support for animated icons in
Guild.icon_url_as()andGuild.icon_url.Add
Guild.is_icon_animated().Add support for the various new
MessageTypeinvolving nitro boosting.Add
VoiceRegion.india. (GH-2145)Add
Embed.insert_field_at(). (GH-2178)Add a
typeattribute for all channels to their appropriateChannelType. (GH-2185)Add
Client.fetch_channel()to fetch a channel by ID via HTTP. (GH-2169)Add
Guild.fetch_channels()to fetch all channels via HTTP. (GH-2169)[ext.tasks] Add
Loop.stopto gracefully stop a task rather than cancelling.[ext.tasks] Add
Loop.failedto query if a task had failed somehow.[ext.tasks] Add
Loop.change_intervalto change the sleep interval at runtime (GH-2158, GH-2162)
Bug Fixes¶
Fix internal error when using
Guild.prune_members().[ext.commands] Fix
Command.invoked_subcommandbeing invalid in many cases.[ext.tasks] Reset iteration count when the loop terminates and is restarted.
[ext.tasks] The decorator interface now works as expected when stacking (GH-2154)
Miscellaneous¶
- Improve performance of all Enum related code significantly.
This was done by replacing the
enum.Enumcode with an API compatible one.This should not be a breaking change for most users due to duck-typing.
Improve performance of message creation by about 1.5x.
Improve performance of message editing by about 1.5-4x depending on payload size.
Improve performance of attribute access on
Memberabout by 2x.Improve performance of
utils.get()by around 4-6x depending on usage.Improve performance of event parsing lookup by around 2.5x.
Keyword arguments in
Client.start()andClient.run()are now validated (GH-953, GH-2170)The Discord error code is now shown in the exception message for
HTTPException.Internal tasks launched by the library will now have their own custom
__repr__.All public facing types should now have a proper and more detailed
__repr__.[ext.tasks] Errors are now logged via the standard
loggingmodule.
v1.1.1¶
Bug Fixes¶
Webhooks do not overwrite data on retrying their HTTP requests (GH-2140)
Miscellaneous¶
Add back signal handling to
Client.run()due to issues some users had with proper cleanup.
v1.1.0¶
New Features¶
- There is a new extension dedicated to making background tasks easier.
You can check the documentation here: API Reference.
Add
Permissions.streampermission. (GH-2077)Add equality comparison and hash support to
AssetAdd
compute_prune_membersparameter toGuild.prune_members()(GH-2085)Add
Client.cached_messagesattribute to fetch the message cache (GH-2086)Add
abc.GuildChannel.clone()to clone a guild channel. (GH-2093)Add
delaykeyword-only argument toMessage.delete()(GH-2094)Add support for
<:name:id>when adding reactions (GH-2095)Add
Asset.read()to fetch the bytes content of an asset (GH-2107)Add
Attachment.read()to fetch the bytes content of an attachment (GH-2118)Add support for voice kicking by passing
NonetoMember.move_to().
discord.ext.commands¶
Add new
dm_only()check.Support callable converters in
Greedy- Add new
MessageConverter. This allows you to use
Messageas a type hint in functions.
- Add new
Add
Command.parentsto fetch the parents of a command (GH-2104)
Bug Fixes¶
Fix
AttributeErrorwhen using__repr__onWidget.Fix issue with
abc.GuildChannel.overwritesreturningNonefor keys.Remove incorrect legacy NSFW checks in e.g.
TextChannel.is_nsfw().Fix
UnboundLocalErrorwhenRequestsWebhookAdapterraises an error.Fix bug where updating your own user did not update your member instances.
Tighten constraints of
__eq__inSpotifyobjects (GH-2113, GH-2117)
discord.ext.commands¶
Fix lambda converters in a non-module context (e.g.
eval).- Use message creation time for reference time when computing cooldowns.
This prevents cooldowns from triggering during e.g. a RESUME session.
Fix the default
on_command_error()to work with new-style cogs (GH-2094)DM channels are now recognised as NSFW in
is_nsfw()check.Fix race condition with help commands (GH-2123)
Fix cog descriptions not showing in
MinimalHelpCommand(GH-2139)
Miscellaneous¶
Improve the performance of internal enum creation in the library by about 5x.
Make the output of
python -m discord --versiona bit more useful.The loop cleanup facility has been rewritten again.
The signal handling in
Client.run()has been removed.
discord.ext.commands¶
Custom exception classes are now used for all default checks in the library (GH-2101)