Additions
- Support for uws (significantly faster websocket implementation) (c91ee7a, 0008a18, 945a2e3, c683790, 6afd80c)
- Support for ETF websocket encoding with erlpack (1e5afc1)
- Support for prebuilt FFMPEG packages from ffmpeg-binaries (52a83b9)
- Web distributions (2440a4a, 411c9bd, too many to list)
- ClientOptions.restTimeOffset to tweak the additional delay for ratelimiting (544e456)
- Message reactions (8105988 through 21b00e1 and more)
- Message embeds/rich text support (27270a3, b2bc844)
- TextBasedChannel.send() as a combined message sending method that can handle all message stuff (ed8fcf6)
- Improved emoji support (d129457)
- Emoji.identifier
emojiAdd
andemojiDelete
events (cd657be)
- OAuthApplication support (c9dbf1f, 8533076, 8139bef, bef0523)
- Client.fetchApplication()
- Guild.applicationID
- OAuth2Application and ClientOAuth2Application classes
- Message.webhookID/fetchWebhook() (676a895, 8b7ef0c)
- Message.isMemberMentioned() (676a895)
- User/GuildMember.lastMessageId (b177aef)
- User.defaultAvatar/defaultAvatarURL/displayAvatarURL (586d652, 78026df)
- User.dmChannel (84503c8)
- ClientUser.fetchMentions() (e392107)
- UserProfile.premium (8139bef)
- GuildMember.displayName (586d652)
- Guild.splashURL (edfb27f)
- Guild.applicationID (8139bef, bef0523)
- Role.editable (7d02e73, 544540f)
- Nullable permission overwrites to reset (5dc30d6)
- GuildChannel.clone() (d766e72)
- Client.pings/ping (58c7c2e)
- Client.setTimeout()/clearTimeout() made public (f249607)
- Client.generateInvite() (fa7d63a)
- Client#disconnect event receives the CloseEvent from the websocket (b518437)
- StreamDispatcher#end event receives the reason for ending (fbe1929)
- Collection.equals() (a0b245b)
- TypeScript typings (b85a589)
Changes
- Client.login() no longer supports logging in with email + password (a20bac7)
- ClientUser.setEmail()/setPassword() now require the current password to be passed, in addition to setUsername() on user accounts (cecb0ae)
- Removed TextBasedChannel.sendTTSMessage() (ed8fcf6)
- Using Collection.find()/exists() with IDs will throw an error (ee3a03f)
- ShardingManager no longer marked as experimental (305070d)
- Huge internal simplification of promises (8306d50, 60e0d50)
- GuildMember.addRole()/removeRole() now use the new API functionality (638e51a)
- FileResolvable renamed to BufferResolvable (5fa9e35)
- Guild.createEmoji() and TextChannel.createWebhook() now accept BufferResolvable or Base64Resolvable (c041b1b)
- User.avatarURL supports animated gif avatars (2390e52)
- Role.toString() on the @everyone role will simply be
@everyone
, rather than a full role mention (3451367) - Message.edit() updated to match new TextBasedChannel.send() functionality (ed8fcf6)
- Updated to Superagent 3 (6383d42)
Fixes
- VoiceConnection#speaking never emits (4e6b632)
- ChannelResolvables don't work with strings (cdf66f8)
- BufferResolvables failing improperly for URLs with an empty response body (a359f34)
- Message.edits (4ae1f63)
- Role.setPosition() returns Guild instead of Role (27e77d3)
- Role.setPosition() doesn't reorder other roles properly (e63432c)
- Disabled events not actually disabling (9323882)
- VoiceConnection.playConvertedStream() (eedc097)
- Guild sync assumes unknown members are new to the guild (b335824)
- Presence update before ready (6043a1f)
- Collection.set()/delete() don't chain properly (bd00bc4)
- Collection.reduce() doesn't perfectly mirror Array.reduce() (28ca830)
- ShardClientUtil emits an error upon multiple clients being created in one process (a0de75f)
- Crash when a guild member gets added to a guild connected to a voice channel that isn't cached (a0a3989)
- Other minor fixes