Releases: za419/CadenceBot
One-step-request filter application bugfix
This release fixes a bug where the fields used in one-step-request
filters had gone out of sync with those sent by the backend, preventing
any filter besides the trivial-filter from working.
This also includes some minor enhancements to ease of writing custom
commands that use randomness.
Custom command aliasing
This patch release adds the appropriate mechanisms to alias custom
commands for ease-of-development. This allows one custom command to
simply be defined as a second name for another custom command within
it's own class (equalTo, startsWith, targeted, multitargeted).
Note that at this time an alias target cannot itself be an alias. If
this deficiency ever presents actual damage in real configurations
(perhaps this is likely when live reconfiguration comes into play), I
will add in alias-dereference loops to handle this situation.
Core command aliasing
Core commands (those documented by Cadence help
) can now be given
aliases - Alternative prompt strings that will be translated to
canonical forms before command processing occurs.
Alias canonicalization will only occur after bans are checked (avoiding
wasted time checking messages from banned users).
Currently configured aliases (by default) are to support a common typo
("Cadence nowplaying"), and to support one alternate usage of play (to
perform requests) that was brought to my confusion during some confusion
regarding the helptext that should be written for play.
Play channel autoselect and more
The major feature of this release is to enable play channel
autoselection - If a user who isn't already in a channel uses the play
command, the bot will automatically select either a channel it thinks is
meant for it, or the first available channel.
This release also:
- Adds the ability to configure the bot to autostart with its server on
boot during first-time-setup (via rc.local) - Adds the ability to specify parameters in short helptext (ie Cadence
request ) - Adds the ability for multitargeted customCommands to mention the
author of the message via %a - Includes a massive dependency update (which required recreating all
deployed CadenceBot instances from <=v1.5.2.2)
Add automated release creation
The new tag-release script will automatically apply Prettier, update
package.json, and create the appropriate commit and tag for this and
future CadenceBot releases.
Code Formatting Baseline
From this point onwards, CadenceBot will use Prettier to format bot.js. This patch release provides a well formatted baseline for future diffs.
Dynamic bans, bugfixes, and v2 requests
- Bans can now be applied at runtime, by the admin sending messages in a Discord server. They can add or remove a user from the ban list - Bans are synced to disk.
- Bans may be applied temporarily by specifying an object for a ban rather than an ID. This object may specifiy a start and end timestamp for the date (this is a human readable ISO formatted stamp, not a Unix timestamp). This is primarily done via the dynamic ban command, but it is possible to handwrite it.
- Fix a number of quirks involving printout of long messages, perform some fixups to logging, and perform some security updates (especially node-fetch)
- Consume the CadenceRadio v2 request API to perform non-rate-limited requests if the admin provides an API key.
Blacklist, custom command fixes, and server administration role
- A list of users can be specified in config to be permanently ignored
by CadenceBot. If desired, this can include CadenceBot itself, to
prevent the bot from replying to itself (This is now done in
production). - Randomized custom commands are now properly overrided (if both are
arrays, the arrays are merged) - Custom commands and long-reply commands now pass output via the
sendLong mechanism, which allows the sending of messages past
Discord's character limit (With italicized spaces!) - A single user can be specified as the Administrator for a particular
CadenceBot instance. Certain commands (currently maillog and config -
see below) are only runnable by the Administrator - A new command allows the bot to echo the pretty printed JSON of the
current configuration to the channel. This is admin-only.
Additionally, the same pretty-print is logged (debug) on bot start.
Stream improvements, custom command improvements, and more
The major feature of this release is improvements to the
CadenceBot-forwarded CadenceRadio stream.
This update introduces configurable options to the stream - An
administrator may now configure stream volume and the number of retries
made when a stream packet is dropped, in addition to the bitrate. Additionally, the stream is now a broadcast - Instead of getting a new connection to Cadence for each Discord server that wants to listen, CadenceBot now broadcasts a single stream to all listeners. This is much nicer for network consumption.
This update also introduces the "multitargeted" type of custom command.
These are allowed to include multiple words which can be formatted into
the response.
Minor improvements include adding 'maillog', which can trigger the
maillog script when the command is run in the server - this is disabled
by default and intended for debugging, improvements for the mechanics of
targeted custom commands, and timezoned logging.
Library listings, configurable API targets, and more
This minor version update adds the library listing command, which
requests Cadence to provide a list of all available songs.
Additionally, API paths to Cadence are now set in the configuration
files, so that an instance may run off an alternative service (with
compatible API). This also means that updating to new API targets is
fairly easy, because it just requires a config update and a restart.
Smaller updates:
- Manually calling
now playing
triggers an update of the bot's status across all servers - Support for custom-configured commands
- Default custom commands are included to demonstrate how to set them
- Additional commands can be added without removing access to these
- CadenceBot logs are emailed as attachments on server restart, instead of as message bodies.
- Support for ARIA 'special requests'
- This feature is the result of the issue mentioned 100 commits (exactly!) ago, in v1.3.0
- This feature is done using the API specified for the v3 Cadence server
- This permits request timeouts to be specific to the requesting user or server, if the Cadence sysadmin (@kenellorando ) permits it
- Otherwise, the current behavior (where the whole bot has one request timeout) is used.
- This feature can be disabled in configuration.