Skip to content

Releases: abalabahaha/eris

0.8.3

19 Jan 20:29
Compare
Choose a tag to compare

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:

  • Stop recreating errors from Shard.onWSMessage() (a31d2d5)
    • This one's useful for debugging! It doesn't hide your stacktraces anymore!
  • Fix CommandClient cooldowns for DM messages (f345229)
  • Fix Channel construction on REST mode (f675772)

0.8.2

14 Dec 00:30
Compare
Choose a tag to compare

Additions:

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 need ffmpeg/avconv at all
  • 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
  • Fixed typings (7073af0, 9e4f1f7, d236b67)
  • Fixed RTP extension header parsing for voice receiving (6980384)

0.8.1

28 Oct 23:49
Compare
Choose a tag to compare

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) is false by default
    • For best results, install NPM package pako (easier to install), or zlib-sync (faster but requires a C++ compiler)
  • 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

13 Oct 05:59
Compare
Choose a tag to compare

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
  • 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 some a ton of TypeScript definitions (3359227, 0c1a4e4, 865eb1a, 7a214f7, ec51fad, 1e9a4d4, 3946843)

0.7.2

09 Sep 19:08
Compare
Choose a tag to compare

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

20 Aug 23:35
Compare
Choose a tag to compare

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() and editChannel() 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

13 May 22:08
Compare
Choose a tag to compare

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" (use undefined 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
  • 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 requires pako 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

26 Feb 05:19
Compare
Choose a tag to compare

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() and purgeMessages 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

16 Jan 00:55
Compare
Choose a tag to compare

What's New:

  • VoiceConnection now has speakingStart and speakingStop events (which were previously undocumented)
  • User.avatarURL now returns a gif url if the user has a gif avatar. Use User.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

28 Nov 01:27
Compare
Choose a tag to compare

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, only voiceChannelSwitch
  • REST mode no longer breaks event handlers