Releases: esmBot/esmBot
2024.5.2
This release fixes more issues, mostly in regards to sound playback.
Changes
- Added some more playing messages
- Changed source for bird images from shibe.online to files.projectlounge.pw
- Fixed soundplayer error messages
- Fixed host not properly getting user to switch to
- Fixed audio players not being removed after inactivity
- Fixed checking if the bot is in a voice channel
- Fixed YouTube links being added to the queue when YouTube support is disabled
- Fixed broken Tenor URLs being used for API requests
- Changed players to be deleted before leaving voice channels, preventing some weird behavior
- Updated Lavalink plugins
2024.5.1
This release fixes a few issues.
The minimum required Node.js version is now 18.20.0 due to a change that's necessary to keep the bot working on Node.js v22 and above. Bun is unaffected.
Changes
- Added a
this.memberPermissions
command parameter for getting the permissions of the user who ran the command - Replaced import assertions with the
with
keyword (this breaks Node.js version 18.19.1 and below, hence the minimum version bump) - The minor Node.js version number is now checked during the startup version check
- Guild threads are no longer cached when classic commands are disabled
- Guild emojis are no longer cached
- Fixed Prometheus metrics
2024.5.0
This release mainly fixes a few issues and refactors some things.
Changes
- Added an image command argument to send the output as an ephemeral message
- Simplified embed image detection
- Bun's
bun:sqlite
module is now used on the SQLite backend when available - Fixed issue where the SQLite backend could get stuck inside a transaction forever
- A dedicated YouTube source plugin is now used in the default Lavalink config
- Fixed uncaption's tolerance argument and snapchat's pos argument by forcing them to floats
- Fixed some issues resulting from attempting to run in PM2 without the manager process
- Removed special Imgur image handling
2024.4.0
This release features multiple large changes to the bot behind the scenes, introduces some new features/tweaks, and attempts to fix some bugs.
You might notice the different version number format. From now on, esmBot will use a versioning scheme based on the year/month of release rather than strictly adhering to SemVer, which (hopefully) should help lessen the load regarding delivering something major on every new release and result in more rapid releases.
esmBot has dropped support for Node.js v16 and now requires v18 or above. In addition, support has been introduced for Bun (v1.1 or above), offering an alternative to Node.js for those who are chasing performance.
esmBot has also dropped support for Lavalink v3 and now requires v4.
Changes
- Added vignette
- Added volume
- Added initial beta support for user installations
- Added support for the Bun runtime
- Added "bottom" and "scale" arguments to speechbubble
- Added "spoiler" argument to all image commands
- Added shard/process info endpoints to PM2 manager
- Output images are now returned with a spoiler if the original image has one
- Slash command flags are now used to generate help page params
- Heavily refactored natives (thanks @Vultumast!)
- Moved qrcreate and qrrread to natives
- The emote command can now return multiple emotes in a message
- The emote command can be used on other messages via replies
- The Bun version is now shown in stats instead of the Node.js version when running under Bun
- Fonts are now loaded using a custom fontconfig
- Requests now use global fetch instead of undici
- The flag command now uses a different method of getting the flag
- JSON files are now read using imports
- Changed criteria for caption easter egg
- Properly handle ratelimits when getting an image
- Properly check if the bot can view a channel before attempting to get images from it
- Check if content contains only empty characters before attempting to generate an image
- Rewrote the Dockerfile to use multiple build stages for decreasing size
- The natives can now be built as a standalone library (largely untested and WIP, please report any issues you may come across with this)
- Fixed swirl using sequential reads
- Command count is now incremented after the command is run
- Added some new playing messages
- Started using JSDoc to help with linting
- Lots of general code cleanup
- Update packages
- Many more fixes too small to mention here
- Removed Adminer from Docker compose config
- Remove all soundboard commands
1.10.3
This release fixes a few issues.
Some of you may have noticed that there weren't any commits from me over the past few months until just now. Things have been a bit rough on my end, with many events heavily impacting my personal life as of late, and that combined with general burnout and focus on other projects (most of which are related to wetdry.world and lethallava.land, my Fediverse instances) has given me very little time to maintain and develop esmBot. I still hope to maintain this thing for a while, but it's becoming much more difficult to do so.
I know I don't tend to leave messages like this in release notes, but I'm still looking for a job since I had to leave my old job back in July (due to said personal events) and can not afford to sustain server and housing costs for more than a couple of months. I'd be willing to provide a resume or similar info on request.
Apologies for the long text, here are the changes in this release:
Changes
- Backport spotify to vips 8.13
- Fix globe output being static when used with static images
- Fix channel being able to change channel permissions outside the current server
- Fix image request timeouts not being properly handled
- Update packages
- Removed gfycat handling
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
edit
command 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
replicate
instead 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