Changelog#

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning when possible (see our Version Guarantees for more info).

Unreleased#

These changes are available on the master branch, but have not yet been released.

Added#

  • Added banner parameter to ClientUser.edit. (#2396)

  • Added user argument to Paginator.edit. (#2390)

  • Added bridge_option decorator. Required for bridge.Bot in 2.7. (#2417)

  • Added Guild.search_members. (#2418)

  • Added bulk banning up to 200 users through Guild.bulk_ban. (#2421)

  • Added member data to the raw_reaction_remove event. (#2412)

Fixed#

  • Fixed the type-hinting of Member.move_to and Member.edit to reflect actual behavior. (#2386)

  • Fixed a deprecation warning from being displayed when running python -m discord -v by replacing the deprecated module. (#2392)

  • Fixed Paginator.edit to no longer set user to the bot. (#2390)

  • Fixed NameError in some instances of Interaction. (#2402)

  • Fixed the type-hinting of ScheduledEvent.subscribers to reflect actual behavior. (#2400)

  • Fixed ScheduledEvent.subscribers behavior with limit=None. (#2407)

  • Fixed invalid data being passed to Interaction._guild in certain cases. (#2411)

  • Fixed option typehints being ignored when using parameter_name. (#2417)

Changed#

  • Changed the type of Guild.bitrate_limit to int. (#2387)

  • HTTP requests that fail with a 503 status are now re-tried. (#2395)

  • option decorator now accepts input_type. (#2417)

  • Option may be used instead of BridgeOption until 2.7. (#2417)

  • Guild.query_members now accepts limit=None to retrieve all members. (#2419)

Removed#

  • Removed the delete_message_days parameter from ban methods. Please use delete_message_seconds instead. (#2421)

2.5.0 - 2024-03-02#

Added#

  • Added method to start bot via async context manager. (#1801)

  • Added parameters author, footer, image and thumbnail to discord.Embed initializer. (#1996)

  • Added events on_bridge_command, on_bridge_command_completion, and on_bridge_command_error. (#1916)

  • Added the @client.once() decorator, which serves as a one-time event listener. (#1940)

  • Added support for text-related features in StageChannel. (#1936)

  • Added support for one-time event listeners in Client.listen. (#1957)

  • Added current_page argument to Paginator.update(). (#1983)

  • Added application flag application_auto_moderation_rule_create_badge. (#1992)

  • Added support for recording silence via new sync_start argument in VoiceClient.start_recording(). (#1984)

  • Added custom_message to AutoModActionMetadata. (#2029)

  • Added support for voice messages. (#2016)

  • Added data attribute to all Raw Event payloads. (#2023)

  • Added and documented missing AuditLogAction enums. (#2030, #2171)

  • Added AutoMod-related models for AuditLogDiff enums. (#2030)

  • Added Interaction.respond and Interaction.edit as shortcut responses. (#2026)

  • Added view.parent which is set when the view is sent by interaction.response.send_message. (#2036)

  • Added methods bridge.Bot.walk_bridge_commands and BridgeCommandGroup.walk_commands. (#1867)

  • Added support for usernames and modified multiple methods accordingly. (#2042)

  • Added icon and unicode_emoji arguments to Guild.create_role. (#2086)

  • Added cooldown and max_concurrency attributes to SlashCommandGroup. (#2091)

  • Added embedded activities Gartic Phone and Jamspace. (#2102)

  • Added bridge.Context type as a Union of subclasses. (#2106)

  • Added support for type-hinting slash command options with typing.Annotated. (#2124)

  • Added suppress and allowed_mentions parameters to Webhook and InteractionResponse edit methods. (#2138)

  • Added wait_finish parameter to VoiceClient.play for awaiting the end of a play. (#2194)

  • Added support for custom bot status. (#2206)

  • Added function Guild.delete_auto_moderation_rule. (#2153)

  • Added VoiceChannel.slowmode_delay. (#2112)

  • Added ForumChannel.default_reaction_emoji attribute. (#2178)

  • Added default_reaction_emoji parameter to Guild.create_forum_channel and ForumChannel.edit methods. (#2178)

  • Added applied_tags parameter to Webhook.send method. (#2322)

  • Added User.avatar_decoration. (#2131)

  • Added support for guild onboarding related features. (#2127)

  • Added support for monetization related objects and events. (#2273)

  • Added AttachmentFlags and attachment attributes expires_at, issued_at and hm. (#2342)

  • Added invitable and slowmode_delay to Thread creation methods. (#2350)

  • Added support for voice channel statuses. (#2368)

  • Added enforce_nonce parameter for message sending. (#2370)

  • Added audit log support for voice channel status. (#2373)

Changed#

  • Changed default for all name_localizations and description_localizations attributes from being None to being MISSING. (#1866)

  • Changed ffmpeg output suppression when recording voice channels. (#1993)

  • Changed file-upload size limit from 8 MB to 25 MB accordingly. (#2014)

  • Changed the behavior of retrieving bans to accurately reflect the API. (#1922)

  • Changed Interaction.channel to be received from the gateway, allowing it to be DMChannel or GroupChannel. (#2025)

  • Changed DMChannel.recipients to potentially be None. (#2025)

  • Changed the behavior to store view.message when receiving a component interaction, while also changing view.message not to be set when sending view through InteractionResponse.send_message. (#2036)

  • Changed the fetching of attributes shared between text-based and Slash Commands in Bridge Commands to be dynamic. (#1867)

  • discord.Embed attributes (such as author, footer, etc.) now return instances of their respective classes when set and None otherwise. (#2063)

  • Changed default_avatar behavior to depend on the user’s username migration status. (#2087)

  • Changed type hints of command_prefix and help_command arguments to be accurate. (#2099)

  • Replaced orjson features with msgspec in the codebase. (#2170)

  • BridgeOption must now be used for arguments in bridge commands. (#2252)

Removed#

  • Removed Client.once in favour of once argument in Client.listen. (#1957)

  • Removed Embed.Empty in favour of None, and EmbedProxy in favour of individual classes. (#2063)

Fixed#

  • Fixed AttributeError caused by #1957 when using listeners in cogs. (#1989)

  • Fixed an issue in editing webhook messages in forum posts and private threads. (#1981).

  • Fixed View.message not being set when view is sent using webhooks, including Interaction.followup.send or when a message is edited. (#1997)

  • Fixed None being handled incorrectly for avatar in ClientUser.edit. (#1994)

  • Fixed scheduled events breaking when changing the location from external to a channel. (#1998)

  • Fixed boolean converter breaking for Bridge Commands. (#1999)

  • Fixed bridge command options not working. (#1999)

  • Fixed TypeError being raised when passing name argument to bridge groups. (#2000)

  • Fixed TypeError in AutoModRule. (#2029)

  • Fixed the functionality to override the default on_application_command_error behavior using listeners. (#2044)

  • Fixed unloading of cogs with bridge commands. (#2048)

  • Fixed the individual slash command synchronization method. (#1925)

  • Fixed an issue that occurred when webhooks_update event payload channel ID was None. (#2078)

  • Fixed major TypeError when an AuditLogEntry has no user. (#2079)

  • Fixed HTTPException when trying to create a forum thread with files. (#2075)

  • Fixed before_invoke not being run for SlashCommandGroup. (#2091)

  • Fixed AttributeError when accessing a Select object’s values when it hasn’t been interacted with. (#2104)

  • Fixed before_invoke being run twice for slash subcommands. (#2139)

  • Fixed Guild._member_count sometimes not being set. (#2145)

  • Fixed Thread.applied_tags not being updated. (#2146)

  • Fixed type hinting of author property of ApplicationContext to include type-hinting of User or Member. (#2148)

  • Fixed missing delete_after parameter in overload type-hinting for Webhook.send(). (#2156)

  • Fixed ScheduledEvent.creator_id returning str instead of int. (#2162)

  • Fixed _bytes_to_base64_data not defined. (#2185)

  • Fixed inaccurate Union type hint of values argument of basic_autocomplete to include Iterable[OptionChoice]. (#2164)

  • Fixed initial message inside of the create thread payload sending legacy beta payload. (#2191)

  • Fixed a misplaced payload object inside of the thread creation payload. (#2192)

  • Fixed DMChannel.recipient and User.dm_channel being None. (#2219)

  • Fixed ffmpeg being terminated prematurely when piping audio stream. (#2240)

  • Fixed tasks looping infinitely when tzinfo is neither None nor UTC. (#2196)

  • Fixed AttributeError when running permission checks without the bot scope. (#2113)

  • Fixed Option not working on bridge commands because ext.commands.Command doesn’t recognize them. (#2256)

  • Fixed offset-aware tasks causing TypeError when being prepared. (#2271)

  • Fixed AttributeError when serializing commands with Annotated type hints. (#2243)

  • Fixed Intents.all() returning the wrong value. (#2257)

  • Fixed AuditLogIterator not respecting the after parameter. (#2295)

  • Fixed AttributeError when failing to establish initial websocket connection. (#2301)

  • Fixed AttributeError caused by command.cog being MISSING. (#2303)

  • Fixed self.use_default_buttons being assumed truthy by Paginator.update. (#2319)

  • Fixed AttributeError when comparing application commands with non-command objects. (#2299)

  • Fixed AttributeError when copying groups on startup. (#2331)

  • Fixed application command options causing errors if declared through the option decorator or kwarg. (#2332)

  • Fixed options declared using the parameter default value syntax always being optional. (#2333)

  • Fixed BridgeContext type hints raising an exception for unsupported option type. (#2337)

  • Fixed TypeError due to (Sync)WebhookMessage._thread_id being set to None. (#2343)

  • Fixed AttributeError due to entitlements not being included in Interaction.__slots__. (#2345)

  • Fixed Thread.me being out of date and added the thread owner to Thread.members on creation. (#1296)

  • Fixed keyword argument wildcard of bridge.has_permissions having the wrong type hint. (#2364)

  • Fixed enum to support stringified annotations. (#2367)

2.4.1 - 2023-03-20#

Changed#

  • Updated the values of the Color.embed_background() classmethod to correspond with new theme colors in the app. (#1931)

Fixed#

  • Fixed the type-hinting of SlashCommandGroup.walk_commands() to reflect actual behavior. (#1838)

  • Fixed the voice IP discovery due to the recent announced change. (#1955)

  • Fixed reason being passed to the wrong method in guild.create_auto_moderation_rule. (#1960)

2.4.0 - 2023-02-10#

Added#

  • Added new AutoMod trigger metadata properties regex_patterns, allow_list, and mention_total_limit; and added the mention_spam trigger type. (#1809)

  • Added missing image parameter to Guild.create_scheduled_event() method. (#1831)

  • New ApplicationRoleConnectionMetadata class for application role connection metadata, along with the fetch_role_connection_metadata_records and update_role_connection_metadata_records methods in Client. (#1791)

  • Added new message types, role_subscription_purchase, interaction_premium_upsell, stage_start, stage_end, stage_speaker, stage_raise_hand, stage_topic, and guild_application_premium_subscription. (#1852)

  • Added new EmbeddedActivity values. (#1859)

  • Added new suppress_notifications to MessageFlags. (#1912)

  • Added GIF sticker format type to the StickerFormatType enum. (#1915)

  • Added new raw events: raw_member_remove, raw_thread_update, and raw_thread_member_remove. (#1880)

  • Improved support for setting channel types & added new channel types for discord.Option. (#1883)

Changed#

  • Changed EmbeddedActivity values to update accordingly with the new activities. (#1859)

  • Advanced version info is now stored as a dict in version_info.advanced instead of attributes on the version_info object. (#1920)

  • The version_info.release_level attribute has been reverted to its previous name, releaselevel. (#1920)

Fixed#

  • Fixed bugs in Page.update_files where file objects stored in memory were causing an AttributeError, and io.BytesIO files didn’t send properly more than once. (#1869 & #1881)

  • Fixed bridge groups missing the parent attribute. (#1823)

  • Fixed issues with creating auto moderation rules. (#1822)

2.3.3 - 2023-02-10#

  • Fixed an unhandled KeyError exception when receiving GIF stickers, causing crashes. (#1915)

2.3.2 - 2022-12-03#

Fixed#

  • Fixed another AttributeError relating to the new bridge_commands attribute on ext.bridge.Bot. (#1815)

  • Fixed an AttributeError in select relating to the select type. (#1814)

  • Fixed Thread.applied_tags always returning an empty list. (#1817)

2.3.1 - 2022-11-27#

Fixed#

  • Fixed AttributeError relating to the new bridge_commands attribute on ext.bridge.Bot. (#1802)

2.3.0 - 2022-11-23#

Added#

  • New brief Attribute to BridgeSlashCommand. (#1676)

  • Python 3.11 support. (#1680)

  • New select types user, role, mentionable, and channel - Along with their respective types and shortcut decorators. (#1702)

  • Added support for age-restricted (NSFW) commands. (#1775)

  • New flags: PublicUserFlags.active_developer & ApplicationFlags.active. (#1776)

  • Support for new forum features including tags, default slowmode, and default sort order. (#1636)

  • Support for new thread attributes total_message_sent and is_pinned. (#1636)

  • Added bridge_commands attribute to ext.bridge.Bot for access to bridge command objects. (#1787)

  • Updated Guild.features to include new and previously missing features. (#1788)

Fixed#

  • Fix bridge.has_permissions. (#1695)

  • Fix audit log overwrite type always resulting in None. (#1716)

  • Fixed error when using suppress kwarg in send(). (#1719 & #1723)

Changed#

  • get_application_command() type kwarg now defaults to ApplicationCommand, so all command types can be retrieved by default. (#1678)

  • get_application_command() now supports retrieving subcommands and subcommand groups. (#1678)

Removed#

  • Removed the guild feature PRIVATE_THREADS due to paywall limitation removal. (#1789)

2.2.2 - 2022-10-05#

Fixed#

  • Fixed parent attribute of second-level subcommands being set to the base level command instead of the direct parent. (#1673)

2.2.1 - 2022-10-05#

Added#

  • New SlashCommand.qualified_id attribute. (#1672)

Fixed#

  • Fixed a TypeError in ban() methods related to the new delete_message_seconds parameter. (#1666)

  • Fixed broken cog and parent attributes on commands in cogs. (#1662)

  • Fixed SlashCommand.mention for subcommands. (#1672)

2.2.0 - 2022-10-02#

Added#

  • New Guild Feature INVITES_DISABLED. (#1613)

  • suppress kwarg to Messageable.send(). (#1587)

  • proxy and proxy_auth params to many Webhook-related methods. (#1655)

  • delete_message_seconds parameter in ban methods. (#1557)

  • New View.get_item() method. (#1659)

  • Permissions support for bridge commands. (#1642)

  • New BridgeCommand.invoke() method. (#1642)

  • New raw_mentions, raw_role_mentions and raw_channel_mentions functions in discord.utils. (#1658)

  • New methods original_response, edit_original_response & delete_original_response for Interaction objects. (#1609)

Deprecated#

  • The delete_message_days parameter in ban methods is now deprecated. Please use delete_message_seconds instead. (#1557)

  • The original_message, edit_original_message & delete_original_message methods for Interaction are now deprecated. Please use the respective original_response, edit_original_response & delete_original_response methods instead. (#1609)

Fixed#

  • Various fixes to ext.bridge groups. (#1633 & #1631)

  • Fix VOICE_SERVER_UPDATE error. (#1624)

  • Removed unnecessary instance check in autocomplete. (#1643)

  • Interaction responses are now passed the respective proxy and proxy_auth params as defined in Client. (#1655)

2.1.3 - 2022-09-06#

Fixed#

  • Fix TypeError in process_application_commands. (#1622)

2.1.2 - 2022-09-06#

Fixed#

  • Fix subcommands having MISSING cog attribute. (#1594 & #1605)

2.1.1 - 2022-08-25#

Fixed#

  • Bridge command detection in cogs. (#1592)

2.1.0 - 2022-08-25#

Added#

  • Support for add, sub, union, intersect, and inverse operations on classes inheriting from BaseFlags. (#1486)

  • A disable_on_timeout kwarg in the View constructor. (#1492)

  • New mention property for SlashCommand objects, allowing a shortcut for the new command markdown syntax. (#1523)

  • An app_commands_badge value on ApplicationFlags. (#1535 and #1553)

  • A new fetch_application method in the Client object. (#1536)

  • New on_check_failure event method for the View class. (#799)

  • A set_mfa_required method to Guild. (#1552)

  • Support for command groups with bridge commands. (#1496)

  • Support for Attachment type options for bridge commands. (#1496)

  • is_app property for BridgeContext to better differentiate context types. (#1496)

  • Support for localization on bridge commands. (#1496)

  • A filter_params helper function in discord.utils. (#1496)

  • Support for InteractionMessage via the message property of View. (#1492)

Changed#

  • Use slash_variant and ext_variant attributes instead of get_application_command() and get_ext_command() methods on BridgeCommand. (#1496)

  • Set store kwarg default to False in load_extension(s) method. (#1520)

  • commands.has_permissions() check now returns True in DM channels. (#1577)

Fixed#

  • Fix VoiceChannel/CategoryChannel data being invalidated on Option._invoke. (#1490)

  • Fix type issues in options.py (#1473)

  • Fix KeyError on AutoModActionExecution when the bot lacks the Message Content Intent. (#1521)

  • Large code/documentation cleanup & minor bug fixes. (#1476)

  • Fix Option with type str raising AttributeError when min_length or max_length kwargs are passed. (#1527)

  • Fix load_extensions parameters not being passed through correctly. (#1537)

  • Fix SlashCommandGroup descriptions to use the correct default string. (#1539 and #1586)

  • Fix Enum type options breaking due to from_datatype() method & Fix minor typing import. (#1541)

  • Adjust category and guild _channels attributes to work with NoneType positions. (#1530)

  • Make SelectOption.emoji a property. (#1550)

  • Improve sticker creation by checking for minimum and maximum length on name and description. (#1546)

  • Fix threads created with a base message being set to the wrong message_reference. (#1551)

  • Avoid unnecessary calls to sync_commands during runtime. (#1563)

  • Fix bug in Modal.on_timeout() by using custom_id to create timeout task. (#1562)

  • Respect limit argument in Guild.bans(). (#1573)

  • Fix before argument in on_scheduled_event_update event always set to None by converting ID to int. (#1580)

  • Fix __eq__ method ApplicationCommand accidentally comparing to self. (#1585)

  • Apply cog_check method to ApplicationCommand invocations. (#1575)

  • Fix Interaction.edit_original_message() using ConnectionState instead of InteractionMessageState. (#1565)

  • Fix required parameters validation error. (#1589)

Security#

  • Improved fix for application-based bots without the bot scope (#1584)

2.0.1 - 2022-08-16#

Security#

  • Fix for application-based bots without the bot scope (#1568)

2.0.0 - 2022-07-08#

Added#

  • New news property on TextChannel. (#1370)

  • New invisible kwarg to defer() method. (#1379)

  • Support for audit log event type 121 APPLICATION_COMMAND_PERMISSION_UPDATE. (#1424)

  • New ForumChannelConverter. (#1440)

  • A shortcut jump_url property to users. (#1444)

  • Ability for webhooks to create forum posts. (#1405)

  • New message property to View (#1446)

  • Support for error, before_invoke, and after_invoke handlers on BridgeCommand. (#1411)

  • New thread property to Message. (#1447)

  • A starting_message property to Thread. (#1447)

  • An app_permissions property to Interaction and ApplicationContext. (#1460)

  • Support for loading folders in load_extension, and a new helper function load_extensions. (#1423)

  • Support for AutoMod (#1316)

  • Support for min_length and max_length kwargs in Option. (#1463)

  • Native timeout support for Modal. (#1434)

Changed#

  • Updated to new sticker limit for premium guilds. (#1420)

  • Replace deprecated endpoint in HTTPClient.change_my_nickname. (#1426)

  • Updated deprecated IDENTIFY packet connection properties. (#1430)

Removed#

  • Guild.region attribute (Deprecated on API, VoiceChannel.rtc_region should be used instead). (#1429)

Fixed#

  • Change guild_only to dm_permission in application command to_dict method. (#1368)

  • Fix repr(ScheduledEventLocation) raising TypeError. (#1369)

  • Fix repr(TextChannel) raising AttributeError. (#1370)

  • Fix application command validation. (#1372)

  • Fix scheduled event cover property raising AttributeError. (#1381)

  • Fix SlashCommandGroup treating optional arguments as required. (#1386)

  • Fix remove_application_command not always removing commands. (#1391)

  • Fix busy-loop in DecodeManager when the decode queue is empty, causing 100% CPU consumption. (#1395)

  • Fix incorrect activities and permissions on Interaction and Option objects. (#1365)

  • Converted PartialMember deaf and mute from str annotation (incorrect) to bool annotation. (#1424)

  • Use PUT instead of POST in HTTPClient.join_thread. (#1426)

  • Fix enum options not setting input_type to a SlashCommandOptionType. (#1428)

  • Fixed TypeError when using thread options. (#1427)

  • Allow voice channels in PartialMessage. (#1441)

  • Fixed AuditLogAction.target_type for application command permission updates. (#1445)

  • Fix bridge commands to ignore the ephemeral kwarg. (#1453)

  • Update thread.members on thread.fetch_members. (#1464)

  • Fix the error when Discord doesn’t send the app_permissions data in Interaction. (#1467)

  • Fix AttributeError when voice client play() function isn’t completed yet. (#1360)

2.0.0-rc.1 - 2022-05-17#

Added#

  • A delete_after kwarg to Paginator.send. (#1245)

  • New reason kwarg to Thread.delete_messages. (#1253)

  • A new jump_url property to channel and thread objects. (#1254 & #1259)

  • New Paginator.edit() method. (#1258)

  • An EmbedField object. (#1181)

  • Option names and descriptions are now validated locally. (#1271)

  • Component field limits are now enforced at the library level (#1065 & #1289)

  • Support providing option channel types as a list. (#1000)

  • New Guild.jump_url property. (#1282)

  • ext.pages now supports ext.bridge. (#1288)

  • Implement None check for check_guilds. (#1291)

  • A debug warning to catch deprecated perms v1 usage until v2 perms are implemented. (#1301)

  • A new files parameter to Page object. (#1300)

  • A disable_all_items and enable_all_items methods to View object. (#1199 & #1319)

  • New is_nsfw attribute to voice channels. (#1317)

  • Support for Permissions v2. (#1328)

  • Allow using Enum to specify option choices. (#1292)

  • The file and files parameters to InteractionResponse.edit_message(). (#1340)

  • A BridgeExtContext.delete() method. (#1348)

  • Forum channels support. (#1249)

  • Implemented Interaction.to_dict. (#1274)

  • Support event covers for audit logs. (#1355)

Changed#

  • Removed implicit defer call in View. (#1260)

  • Option class and usage were rewritten. (#1251)

  • description argument of PageGroup is now optional. (#1330)

  • Allow Modal.children to be set on initialization. (#1311)

  • Renamed delete_exiting to delete_existing (typo). (#1336)

Fixed#

  • Fix PartialMessage.edit() setting view as None when view kwarg is not passed. (#1256)

  • Fix channel parsing in slash command invocations. (#1257)

  • Make the channel position attribute optional. (#1257)

  • Fix PaginatorMenu to use interaction routes for updates. (#1267)

  • Fix PartialMessage.edit() behavior when content is None. (#1268)

  • Fix Paginator.add_menu() and Paginator.add_default_buttons() passing custom_id to PaginatorMenu. (#1270)

  • Fix process_application_commands command not found fallback. (#1262)

  • Fix interaction response race condition. (#1039)

  • Remove voice client when the bot disconnects. (#1273)

  • Fix conversion exception in ext.bridge. (#1250)

  • Context.me returns ClientUser when guilds intent is absent. (#1286)

  • Updated Message.edit type-hinting overload and removed resulting redundant overloads. (#1299)

  • Improved validation regex for command names & options. (#1309)

  • Correct Guild.fetch_members() type-hints. (#1323)

  • Multiple fixes and enhancements for PageGroup handling. (#1350)

  • Make TextChannel._get_channel async. (#1358)

2.0.0-beta.7 - 2022-04-09#

Fixed#

  • Fix py3.10 UnionType checks issue. (#1240)

Older Versions#

A changelog for versions prior to v2.0 can be found here.