Releases: esmBot/esmBot
1.10.2
This release fixes more bugs, brings the bot up to speed with Discord username changes, and adds a minor feature.
Changes
- Add spotify (image command)
- Add
editcommand option - Add message for missing commands in natives
- Allow building natives without ImageMagick
- Port tile to libvips
- Change maximum upload file size to 25MB
- Change maximum incoming image size to 40MB
- Improve image request timeout handling
- Replace timeout error throws in PM2 manager with more tame logs
- Username discriminators are not displayed if their value is 0
- Searx requests are now faster
- Change image search embed format
- Fix CPU pinning issue
- Fix image command permissions check
- Fix classic commands in DMs
- Fix hooh not executing properly
- Fix qrcreate not working with slash commands
- Fix(?) Martinique flag
- Update packages
- Remove shardReady handler
- Remove zamn
1.10.1
This release fixes some bugs and attempts to slim things down a bit.
Changes
- The bot no longer caches channels when classic commands are disabled
- Changed meme and whisper to use a different, smaller, and more scalable outline method
- Changed snapchat to use
replicateinstead of a loop - Changed pm2 manager to handle restarts more gracefully
- Moved some common vectors to common.h
- Fixed initial incompatibility with slash commands and image processing when upgrading
- Fixed exec not properly returning large outputs (#367)
- Fixed Select Image outputs not being ephemeral
- Fixed error responses not sending an error file in some cases
- Updated packages
- Removed unused erlpack, bufferutil, and uuid dependencies
1.10.0
This releases is mainly a bugfix release, but it introduces a couple of new features as well. This is a full release instead of a point release due to various incompatible backend changes.
Notably, the date of this release is March 30, 2023; five years since the esmBot project was born. This update is dedicated to everyone who has supported me and the project over the past 5 years.
I'm currently writing a pretty long retrospective post about the bot; however, it's not quite finished yet. I'll link to it in the usual places once it's finished.
Maybe I should take a break...
Changes
- Add bounce
- Add togif parameter to image commands
- Port scott to vips
- Port explode/implode to vips
- Add client key to Tenor requests
- Change no voice connection message
- Properly acknowledge Select Image requests
- Rework natives to allow for more portability
- Make globe diffuse image slightly brighter
- Overhaul and simplify database handling (#331, #333)
- Change links to point to the new esmbot.net domain
- Replace references to Twitter with Mastodon
- Simplify flag code
- Fix speechbubble
- Fix sepia
- Fix pagination jump setting a NaN page number
- Fix typo in custom commands docs
- Fix various issues with getting users over REST
- Fix various issues with audio playback
- Fix various issues with PM2 clustering
- Fix macOS CI builds
- Fix comma text escape
- Add new playing messages
- Update lavasrc-plugin
- Update packages
- Remove broken Windows CI builds
- Remove Top.gg integration
1.9.0
This release makes various changes to the bot, mostly with a focus on the backend. Void dragons, sky towers, and sword blocking not included.
Eris (the library previously used by the bot for interacting with Discord) has been unmaintained for quite some time now, with many missing features and architectural issues that make it difficult to keep using and developing on. Some Eris community members have created a new library from scratch called Oceanic, which aims to solve these problems while retaining the Eris style and feel. esmBot has migrated to this new library and should hopefully run slightly better both at scale and on lower-end hardware.
Note that esmBot's SQLite backend is currently broken on Node.js 19 due to an upstream issue. If you use the SQLite database, please stay on versions 16-18 for now.
Changes
- Migrated from Eris to the new Oceanic library
- Replaced eris-fleet with a new custom, PM2-based clustering manager
- Added squish
- Added ability to limit owner-only commands to a specific server
- Added channel name to the audio session end message
- Added alias for swirl
- Added debugging scripts to package.json
- Added new, upscaled Twemoji glyphs as default emoji font
- Added debug logs for the Lavalink connection
- Added config option to disable YouTube playback
- Added many new playing messages
- Activity broadcasts now persist across restarts
- Changed image endpoint for cat/ancient
- Allow usage of classic commands in DMs even when disabled
- Always request GUILDS intent
- Fonts/emojis are now loaded directly from the assets directory
- Overhauled image server connections to avoid IPC overhead
- Overhauled Lavalink server connections
- Replaced pg package with postgres
- Changed sonic font
- Improved audio command response/feedback messages
- Audio commands now load even when Lavalink isn't connected
- Made uncanny ignore hidden and non-PNG files
- The help command is no longer appended to the playing messages if classic commands are disabled
- Refactored command reloading
- Refactored message prefix handling
- Ported swirl to vips
- Fixed Tenor GIF links when used inside a slash command
- Fixed counts for message commands not being updated properly
- Fixed out-of-order reads in flip/flop
- Fixed imagedetect getting the wrong image in a reply
- Fixed issue where the bot wouldn't reconnect to a voice channel after a shard disconnect
- Updated packages
- Updated Topi's Source Managers to LavaSrc
- Removed "requires" field from commands
- Removed Azure image generation support
- Removed serverinfo
- Removed userinfo
1.8.3
This release introduces fixes and features in preparation for Discord's message content intent enforcement.
Changes
- Added support for message menu commands
- Added Select Image message command (to select a specific image for other commands)
- Added another uncanny image ("Uncle Jeremy")
- Added a new alias for nowplaying
- Added support for blacklisting certain commands from loading
- Added the ability to toggle classic/application command types
- seek now accepts proper timestamps
- host now gets the current voice session host when run without arguments
- Improved handling of users leaving voice channels
- Error messages in slash commands are now ephemeral
- Swapped an alias for skip/sticker
- Cleaned up now playing embeds
- Lowered default audio playback volume
- Disabled eris-fleet concurrency in favor of the Eris implementation
- Image natives are no longer loaded by the bot when using an external image server
- Reimplemented cache limit for prefixes and disabled commands
- Prometheus service is no longer started if metrics are disabled
- Delay sound player disconnect to accommodate for the Lavalink audio buffer
- Made broadcast more stable
- Fixed Tenor error messages
- Fixed handling of case-sensitive Gfycat links in slash commands
- Fixed music command owner override
- Removed file parameter from play slash command
- Updated lava-xm-plugin
- Update packages
- Removed evalraw
1.8.2
This release adds a new command and fixes some things.
Changes
- Add uncanny (by popular demand)
- Move to next Lavalink node on disconnect/node crash or stuck tracks
- Refactor large/temp image handling
- Improved voice connection checking
- Moved docs inside source tree
- Make log files rotate
- Clean up separated text input
- Implement new method for getting image data/size/type
- Fix reddit not having proper slash command text input
- Fix slash command "link" parameter not working with gifvs
- Fix dir size caching
- Move Docker image to alpine:edge base
- Move acknowledgement to beginning of image commands
- Another error logging fix attempt
- Update packages
1.8.1
This release fixes some bugs and makes some improvements.
Changes
- Added static command field to disable commands in DMs
- Added some new playing messages
- togif now copies webp animations
- Made THRESHOLD functionality more aggressive with file removal
- Fixed flag not properly detecting emoji
- Fixed multiple sound player bugs
- Fixed soundboard commands not getting players properly
- Updated Topis-Source-Managers-Plugin
1.8.0
This release adds features, fixes bugs, and makes various changes to multiple aspects of the bot. Note that a few commands had to be removed to make room for slash commands.
Arguably the biggest change in this update (besides slash command support) is the move of most image commands from ImageMagick to the libvips library. libvips has seen many improvements with GIF handling over the past year, driven in part by the introduction of the cgif GIF encoder which can encode GIFs incredibly fast, beating many other libraries including ImageMagick.
I'd like to thank jcupitt, the lead developer of libvips, for giving support, fixing bugs quickly, and accepting upstream patches to further improve GIF handling. This update would likely not have been possible without him. Thank you as well to everyone who motivated me to continue working on this release, and I hope you enjoy this update.
Changes
- Migrate most image commands from ImageMagick to libvips
- Add slash command support
- Add gif as a separate command (#286, thanks @bjcscat)
- Add speechbubble (#247, thanks @bjcscat)
- Add avs4you (#243, thanks @bjcscat)
- Add music, a general wrapper for music commands
- Add soundboard, a general wrapper for soundboard commands
- Add tolerance option to uncaption
- Add THRESHOLD variable for automatically deleting files in a temp directory (#249, thanks @bjcscat)
- Add support for MOD/XM/S3M tracker module playback in voice chat (via lava-xm-plugin)
- Add Spotify/Apple Music playback in voice chat (Spotify playback requires API keys)
- Add support for running image commands via Azure Functions (see this repo)
- Add alias for count
- Update to Tenor API v2 (old keys will not work anymore, get a new one from https://developers.google.com/tenor/guides/quickstart)
- Moved Lavalink interaction from Lavacord to Shoukaku
- Moved the wiki into the source tree
- Combine encode and decode into a single commnad, base64
- The bot can now be run in a global context
- The bot now uses eris-fleet's central request handler
- The bot no longer attempts to read delays from Tenor MP4s
- Docker container now uses Twemoji as default emoji font (#245, thanks @BanementI)
- Tweaked some parts of watermark to make it easier to write commands with (#217, thanks @bjcscat)
- Switched package manager from npm to pnpm
- Fix error when attempting to upload a large image without any external storage
- Fix crash when running the bot outside of a Git repo
- Fix prefix-related bugs (#276, thanks @IoIxD)
- Fix pagination jump limit
- Fix invalid mention prefix bug
- Fix issues with avatar and banner
- Fix misleading description in stretch (#284, thanks @angeld23)
- Fixed stats not properly getting owner name/discriminator
- Re-enable disabled events
- Added new playing messages
- Updated packages
- Removed
esmbot_queued_jobsmetric - Removed leak
- Removed trump
- Removed cowsay
- Removed wdt
- Removed invite
- Removed fullwidth
- Removed retro
- Removed rps
- Removed xkcd
- Removed mc
- Removed blurple
1.7.2
This release fixes some bugs and makes some improvements.
Changes
- Changed method for getting images in wikihow (a RapidAPI key is no longer needed)
- Changed method of acknowledging interaction requests
- Make jump page button in paginated embeds send a dropdown
- Pagination timeout is now extended when someone interacts with a button
- Fixed caption2 font
- Fixed play breaking due to improper matching
- Fixed native image module not properly registering in worker thread
- Fixed bug with speed frame removal and delay
- Updated packages
1.7.1
This release fixes some bugs and makes some improvements.
Changes
- Added banner
- Added host
- Added damndaniel
- Re-added qrcreate and qrread
- Added quality option to jpeg
- Various CMake adjustments (the bot now builds on Win32!)
- Added node version check
- Added message on premature image request end
- Added alias for soos
- Deafen the bot when in voice chat
- Refactored URL handling in play
- Retry image jobs up to 3 times on failure
- Re-enable THREAD_LIST_SYNC event
- Check if commands/events end with a .js extension
- Made pagination disable buttons after timeout
- The image API now sends the number of running jobs on the init payload
- Various stability improvements for the sound player
- Fixed images not being grabbed from article embeds
- Fixed eval/exec failing when there are no image servers available
- Fixed some variable checks
- Fixed some more blank name occurrences in the sound player
- Fixed stop not stopping when voice connection is gone
- Fixed image server sorting
- Fixed some causes for improper imstat counts
- Fixed imstat throwing an error when the image API is disabled
- Fixed pause message
- Fixed usage of deprecated methods
- Removed region from serverinfo
- Updated packages