Releases: abalabahaha/eris
Releases · abalabahaha/eris
0.8.3
I just realized it's mostly CommandClient stuff. Oh well. That first listed fix is probably very useful for anyone who ever debugs errors in events.
Additions:
- Added CommandClient command hooks (80f6c58)
- Added CommandClient custom requirements (7d68653)
- Added option to hide commands in default help command list (ac58059)
Fixes:
0.8.2
Additions:
- Added much better REST errors (c29bbcf, a45b787, fc198b9)
- Added cooldown exclusions to
CommandClient
(867ee9d)
Fixes:
- Fixed ratelimiter on NodeJS >= 9.0.0 (0623daa)
- Fixed Buffer handling errors when using
uws
+erlpack
(78bd8be) - Fixed missing converter error in VoiceConnection constructor (cc20fcc)
- People who use purely
.opus
/.webm
don't needffmpeg
/avconv
at all
- People who use purely
- Fixed days parameter for Guild pruning (bb0fdf1)
- Fixed error caused by receiving a
GUILD_MEMBER_CHUNK
for a missing/unavailable guild (0cbc9d0) - Demoted disconnect warnings to debug (44c3879)
- Since the
shardDisconnect
event already exists
- Since the
- Fixed typings (7073af0, 9e4f1f7, d236b67)
- Fixed RTP extension header parsing for voice receiving (6980384)
0.8.1
Additions:
- Added support for
zlib-stream
gateway compression (49c0654, 90790ea, 4164696, 08e1ea4, f8f27b0, a105af3, 90d0c17, 7e6040b)- Since zlib has been acting up for some users, gateway compression (Client construct option
compress
) isfalse
by default - For best results, install NPM package
pako
(easier to install), orzlib-sync
(faster but requires a C++ compiler)
- Since zlib has been acting up for some users, gateway compression (Client construct option
- Gateway events (
messageCreate
,guildDelete
, etc.) are now emitted from the Shard they were received on, in addition to the existing Client events (9d1016c, 8623b3d, cdf2aaf, 92c3da0, cdf4a85) - Emit a
Client#hello
event when a shard receives an OP:10/Hello packet (1d8271a, 389a9a6) - Allow CommandClient to grab a Message object/Promise from a command generator (c56241e)
Fixes:
- Demoted a ton of errors and warnings (c4b9c33)
- Many things that were warnings are now debug messages, and many errors are now considered warnings. This was done because we found that a lot of the Discord behavior we considered "abnormal" is actually "normal".
- Fixed some reaction ratelimiting behavior (81f0e82, 94c0767)
- Apparently Discord ratelimits reactions across the entire account, so it is not recommended for large bots to use reactions
- Fixed the Invite constructor (3391e8f)
- Fixed
Message.cleanContent
edge cases (c691282, d8b7d39) - Fixed undefined errors in
User.dynamicAvatarURL
(71c0907) - Fixed reaction button actions in CommandClient (884034c)
- Fixed CommandClient handling of array generators (dbdd30a)
0.8.0
Breaking Changes:
- Removed
Guild.defaultChannel
(b3ff9b3)- Discord has changed the concept of a default channel. Previously, the default channel was just the undeletable channel with the same ID as the guild. Currently, the default channel is the uppermost text channel that a member can view, and is only guaranteed to be "default" the first time a member joins the server. The old default channel can be deleted now, so the old way is no longer reliable.
Shard.status
will be set to"ready"
when the shard is ready, not"connected"
(d66a147)- A shard can technically be "connected" to Discord but still in the middle of the Discord gateway handshake, and thus not ready to process events and other bot things
Additions:
- Added audit log reason parameter to guild role manipulation methods (99832bb)
- Made basically everything
toString()
able (41bdbef) - Made basically everything
toJSON()
able (cbd4674, 2dfd988) - Added latencyThreshold Client option (206480c)
- This is for the folks who keep getting errors about out-of-sync system clocks and don't care
- Added before and after parameters to
Client.getMessageReaction()
and its aliases (1d55807) - Added
Guild.systemChannelID
tracking (9a3d098) - Added ability to directly create channels in categories (70555cb)
- Split GuildChannel into TextChannel and VoiceChannel (7eace2a)
- TextChannel-only/VoiceChannel-only methods are no longer in Channel/GuildChannel, and guild-only methods are no longer inherited by PrivateChannel
- This isn't considered a breaking change, since everything that worked before still works
Fixes:
- Fixed query string duplication in REST error handler (6054367, c45e7c2)
- Fixed several ratelimiting edge cases (a6171c9, f707943, afd3e1b)
- Fixed ratelimit reset time offset calculation (712c5eb)
- Fixed spaces in audit log reason headers (0480c03)
- Fixed logic causing
CategoryChannel.channels
to be incomplete (7c9a001) - Check constructor name in Collection methods to allow storage of objects with similarly named classes (2c321b2)
- Allows for Eris objects from different
require()
d modules to be shared
- Allows for Eris objects from different
- Fixed reaction button error handling in CommandClient (506dd11, 0167ca0)
- Fixed error when parsing empty search results (03da49e)
- Handle VoiceConnection errors during
Client.joinVoiceChannel()
Promise fulfillment (745981d) - Cancel resume attempts if the bot is still resuming (d66a147)
- Fixed clearing game presences (257dd10)
- Fixed setting game presences after abrupt Discord change (a4a021f)
- Fixed uploading multiple attachments in a single message (0725213)
- Fixed
somea ton of TypeScript definitions (3359227, 0c1a4e4, 865eb1a, 7a214f7, ec51fad, 1e9a4d4, 3946843)
0.7.2
Additions:
- Client constructor option
ws
allows you to set WebSocket options for the Shard WebSockets (440e8f8) - New auto-shard feature (8f8c421)
- Shards based on Discord's recommended shard count
- Enable via Client constructor option
maxShards: "auto"
- Category channel (type 4) support (a83deef, 07d082a)
Fixes:
- Fixed error when constructing Client with no token (60f6b13)
- This is only meant for people who only want to use methods that don't require tokens (e.g. webhooks).
- Fixed and updated Typescript typings (71ebf70, 710f071, e7e5143)
- Fixed error in
Client.getRESTGuild()
(e6a686b) - Add undefined checks for some WebSocket events (3c8f592, e41f765)
- [CommandClient] Fixed case insensitive aliases (a9f7fe9)
- [CommandClient] Fixed subcommand tracking (b7e71f2)
0.7.1
Additions:
- TypeScript typings (7b08092, d432dd6, 6c5d7ad)
- These are manually generated for now, so they will be out of date at times. Stay tuned for the automatic typing generator (and thanks Aurieh for writing these!)
editChannel()
allows changing NSFW now (1b724f5)
Breaking changes:
- None :D
Non-breaking changes:
- Moved bulk delete aliases from Channel to GuildChannel (2dfe42c)
- You shouldn't have been able to use these in private channels, so nothing should break
Fixes:
- Fixed NSFW channel property to use new channel logic (0f1d776)
- Fix
editStatus()
(thanks Discord for unintentional unforseen breaking change) (6fada36) - Fixed
permissionsOf()
calculation for @everyone overwrites (0c542d5, 80b4c78, e712531) - Fixed guild cache errors due to Discord eventual consistency™ (162733e)
- Fixed invalid usage message, reaction buttons, and guild prefixes in CommandClient (3fdb583, 2ac1934, a51acad)
- Fixed REST-based methods in Member (6cee9fc)
- Fixed some User objects missing client properties (0444ba3)
createChannel()
andeditChannel()
no longer depend on the channel cache (9c4d2b7, 9e9cc17)- Fixed invalid reference in
editChannel()
(b8c4b41) - Fixed voice connection autocorrect (f8e7bfe)
- Check voice channel ID before disconnecting (ae77d2c, 85af7d7)
- Properly clear the voice packet queue when disconnecting (39733fc)
- Fixed ban reason display in ban menus (2664eb0)
- Fixed
channel.lastPinTimestamp
(7f73fa9) - Fixed deleted role mentions in
Message.cleanContent
(a084276) - Fixed error handler in
Client.connect()
(66d8e9a) - Only send bot token for webhook requests if webhook token was not supplied (7e8ce38)
- Patched up a few example files (26de4cf)
0.7.0
What's New:
- Added audit log support (6130310, 0b3c9be, cd69156, 2e0afd3, 0dd8251)
- Added audit log reason parameter to all possible endpoints (a3c812a)
- Added message type 7 (system join message) support (6b58105)
- The
userUpdate
event is now emitted for the bot account (34ac122) - Added support for a lot more user account only endpoints (98d1a0f)
- editAFK() has been separated from editStatus() (af9c86d)
- Added reaction button support to CommandClient (eecd8d8)
- Added withCounts support to getInvite() (85ff415)
- Added Guild.explicitContentFilter handling (72bff13)
- Added GuildChannel.nsfw getter (e5891b3, e0b132b)
- Added support for multiple attachments in one message (3937f1a)
- createMessage() with
null
content now sends "null" (useundefined
to avoid this)
What's Improved:
- Fixed
messageUpdate
event behavior (ef73d67)- If the message wasn't cached,
oldMessage
should be null, and message will be incomplete - If the message was cached,
oldMessage
should have the changeable properties of the cached message
- If the message wasn't cached,
- Latency is now computed when receiving response headers (less false negatives for system clock sync) (ed73534)
- Voice connections to deleted guilds will automatically disconnect (5bb6a59)
- Using
uws
no longer requirespako
to be installed (9b6485e, 736f834) - Autoreconnect no longer activates for disconnects caused by invalid tokens and shards with too many guilds (9d1ad7c)
- Optimized file uploads (6b58105)
- Fixed voice WS error handling (3f6565d)
- Fixed user guild settings handling (6b58105)
- Added duplicate role check in editGuildMember() (6b58105)
- Fixed
deleteCommand
for errored commands in CommandClient (6b58105) - Fixed subcommand default arguments in CommandClient (100c8fc)
- Fixed uninterrupted voice region switching (8d8431c)
- Fixed joinVoiceChannel() permission check & race conditions (5451533, ccb14a9)
- Fixed handling of received voice packets from browsers (e28153a)
- Fixed some dynamic/static avatar/icon URL related bugs (2fe2dfb)
- Fixed crash caused by people leaving servers that didn't exist (04490ee)
- Fixed crash when detaching from SharedStream (b11c110)
- Fixed DCA transformer (bb7401e)
- General stability improvements
0.6.0
What's New:
- REST errors now contain the Discord response in the error message for easier debugging (04cd094)
Message.guild
is actually gone now (b0d3cd3)createMessage()
now supports sending embeds with attachments (d940dd2, 112a9a0)createRole()
now supports setting role properties (thanks Discord) (df17f01)- Eris now supports notes (userbots only) (98a473c, 1feebe0)
- Eris now supports profiles (userbots only) (3bedb8e)
createChannelInvite()
now supports creating unique invites (1630145)- Added support for customized avatar/iconURL formats and sizes (5f4ac54, 7ee50e3)
- VoiceConnectionManager now extends Collection (1c10182)
- A
guildMemberChunk
event is now emitted when Eris receives member chunks (bf302d2) - Eris will automatically use
uws
if it is installed (703fee0, ce7deea)uws
is a somewhat more efficient WebSocket lib, but is harder to install
- Eris will automatically use
erlpack
if it is installed (703fee0)erlpack
makes WebSocket decoding faster, but is harder to install
- Eris will automatically use
libsodium
if it is installed (a7ce8ef)erlpack
makes voice encryption slightly faster, but is harder to install
- Added the
Channel.removeMessageReactions()
alias (6f01cb3) - Eris supports caching and getting user settings (userbots only) (077284b)
- ExtendedUser now supports the
premium
field (emphasis on ExtendedUser, not User) (cbe80bd) - CommandClient now supports sending messages when the command code errors (1334b2a)
- Changelogs now contain relevant commit hashes
What's Improved:
- Ratelimit buckets should clog less (78be153, b106424)
- Fixed getRESTGuildMember (5002fdb)
purgeChannel
now properly detects old messages (850a133)- Voice no longer crackles when playing music for multiple users (b5b1afb)
- SharedStream is more stable now (a00ff6b, 343fcca)
- Resuming is more stable now (ef37f30)
- Commands with no requirements now execute properly (20ddd9e)
- Eris no longer attempts to connect when it detects internet errors (da0fec0)
getMessages()
andpurgeMessages
no longer continue after erroring (da0fec0)- Fixed auto-deleting subcommands (4890c8a)
- Multipart data handling is improved (5c32692)
- Stopping an unready voice connection no longer errors (172319a)
- Voice now supports passing FFmpeg input arguments (51b2cbc)
- Fixed
joinVoiceChannel()
options (3db5172) - General stability improvements
0.5.2
What's New:
- VoiceConnection now has
speakingStart
andspeakingStop
events (which were previously undocumented) User.avatarURL
now returns a gif url if the user has a gif avatar. UseUser.staticAvatarURL
if you want to avoid animated avatars- Shards now keep track of their latency (
Shard.latency
) Client.deleteMessages()
no longer deletes messages older than 2 weeks (new Discord limitation)Message.guild
is being deprecated soon
What's Improved:
- Editing most objects no longer requires the object to be cached
- Fixed getting Guild objects via the REST API
- Fixed CommandClient's cooldown message, case insensitive aliases, and role requirements
- Fixed an potential undefined reference in
Message.cleanContent
- Fixed Guild emoji method aliases
- Fixed undefined message IDs in
messageReactionRemove
events - Fixed the WebmOpusTransformer class name
- Fixed random bursts of static when playing audio with
inlineVolume
- Fixed the old state data in
voiceStateUpdate
- Fixed editing roles right after creation
- Improved voice connection stability
- Updated SharedStream voice loop with the improvements in the current VoiceConnection loop
- Bumped tweetnacl version
0.5.1
What's New:
- VoiceConnection.volume now aliases VoiceConnection.piper.volumeLevel
What's Improved:
- Fixed a rather large memory leak in 0.5.0 caμsed by message caches having no set limits
- Fixed a small memory leak caused by duplicate objects during autoreconnect
- Autoreconnect stopped ignoring a few weird disconnects
- Updated the Invite structure to match Discord's
- getDMChannel should no longer return a null channel 0.001% of the time
- Users switching channels no longer fire
voiceChannelJoin
/voiceChannelLeave
events, onlyvoiceChannelSwitch
- REST mode no longer breaks event handlers