- MAJOR Added voice gateway v3 support. This will result in increased stability for voice connections
- BREAKING Updated holster to v2.0.0 which changes the way emitters work (and removes the previous priorities). A migration guide will be provided post-RC cycle.
- Added support for ETF on Python 3.x via
earl-etf
(@GiovanniMCMXCIX) - Supported detecting dead/inactive/zombied Gateway websocket connections via tracking
HEARTBEAT_ACK
(@PixeLInc) - Added support for animated emoji (@Seklfreak)
- Added support for
LISTENING
andWATCHING
game statuses (@PixeLInc) - Added
wsaccel
package within theperformance
pack, should improve websocket performance - Added the concept of a
shared_config
which propgates its options to all plugin configs (@enkoder) - Added support for streaming zlib compression to our gateway socket. This is enabled by default and provides significant performance improvements on startup and overall bandwidth usage
- Added support for
Guild.system_channel_id
andGUILD_MEMBER_JOIN
system message - Added
Guild.create_category
,Guild.create_text_channel
andGuild.create_voice_channel
- Added
Channel.create_text_channel
andChannel.create_voice_channel
which can be called only on category channels to add sub-channels
- Fixed 'Invalid token passed' errors from showing up (via removal of token validation)
- Fixed
IndexError
being raised whenMessageIterator
was done iterating (@Majora320) - Fixed overwrite calculations in
Channel.get_permissions
(@cookkkie) - A plethora of PEP8 and general syntax changes have been made to cleanup the code
- Fixed a bug with
Emoji.custom
- Fixed a bug in the typing system that would not allow Field's to have a
default
ofNone
- Fixed the
__str__
method for Channel's displaying (useless) unset data for DMs - Fixed a bug with
MessageIterator
related to iterating before or after an ID of 0 - Fixed incorrect field name (
icon_proxy_url
vsproxy_icon_url
) in MessageEmbedAuthor model - Fixed bugs related to creating and deleting pinned messages
- Fixed
GuildBan.reason
incorrectly handling unicode reasons - Fixed
Paginator
throwing an exception when reaching the end of pagination, instead of just ending its iteration - Fixed
Paginator
defaulting to start at 0 for all iterations
- BREAKING Refactor the way Role's are managed and updated. You should update your code to use
Role.update
- BREAKING Renamed
Model.update
toModel.inplace_update
. You should not have to worry about this change unless you explicitly call that method - DEPRECATION Deprecated the use of
Guild.create_channel
. You should use the explicit channel type creation methods added in this release - Cleaned up various documentation
- Removed some outdated storage/etc examples
- Expanded
APIClient.guilds_roles_create
to handle more attributes - Bumped various requirement versions
- Added support for Guild audit logs, exposed via
Guild.get_audit_log_entries
,Guild.audit_log
andGuild.audit_log_iter
. For more information see theAuditLogEntry
model - Added built-in Flask HTTP server which can be enabled via
http_enabled
and configured viahttp_host
/http_port
config options. The server allows plugins to define routes which can be called externally. - Added support for capturing the raw responses returned from API requests via the
APIClient.capture
contextmanager - Added support for NSFW channels via
Channel.nsfw
andChannel.is_nsfw
- Added initial support for channel categories via
Channel.parent_id
andChannel.parent
- Added various setters for updating Channel properties, e.g.
Channel.set_topic
- Added support for audit log reasons, accessible through passing
reason
to various methods - Added
disco.util.snowflake.from_timestamp_ms
- Added support for
on_complete
callback within DCADOpusEncoderPlayable - BREAKING Added new custom queue types
BaseQueue
/PlayableQueue
for use w/Player
.queue
can be passed when creating aPlayer
, should inherit from BaseQueue- Users who previously utilized the
put
method of the oldPlayer.queue
must move to usingPlayer.queue.append
, or providing a custom queue implementation.
- Added
Emoji.custom
property
- Fixed GuildRoleCreate missing guild_id, resulting in incorrect state
- Fixed SimpleLimiter behaving incorrectly (causing GW socket to be ratelimited in some cases)
- Fixed the shortest possible match for a single command being an empty string
- Fixed group matching being overly greedy, which allowed for extra characters to be allowed at the end of a group match
- Fixed errors thrown when not enabling manhole via cli
- Fixed various warnings emitted due to useage of StopIteration
- Fixed warnings about missing voice libs when importing
disco.types.channel
- Fixed
Bot.get_commands_for_message
returning None (instead of empty list) in some cases
- Greatly imrpoved the performance of
HashMap
- BREAKING Increased the weight of group matches over command argument matches, and limited the number of commands executed per message to one.
- Reuse a buffer in voice code to slightly improve performance
- Added support for capturing the raw responses returned from the API via
APIClient.capture
contextmanager - Added various pieces of documentation
- Fixed Python 3 errors and Python 2 deprecation warnings for CommandError using
.message
attribute
- Grealty improved the performance of the custom HashMap
- Moved tests around and added pytest as the testing framework of choice
- Added support for new NSFW attribute of channels
Channel.nsfw
Channel.set_nsfw
Channel.is_nsfw
behaves correctly, checking both the deprecatednsfw-
prefix and the new attribute
- Added support for
on_complete
callback within DCADOpusEncoderPlayable - BREAKING Added new custom queue types
BaseQueue
/PlayableQueue
for use w/Player
.queue
can be passed when creating aPlayer
, should inherit from BaseQueue- Users who previously utilized the
put
method of the oldPlayer.queue
must move to usingPlayer.queue.append
, or providing a custom queue implementation.
- Fixed bug within SimpleLimiter which would cause all events after a quiescent period to be immedietly dispatched. This would cause gateway disconnects w/ RATE_LIMITED on clients with many Guilds and member sync enabled.
- Improved log messages within GatewayClient
- Log voice endpoint within VoiceClient