All notable changes to this project will be documented in this file.
- Switch over to poise/serenity for Discord.
Replace
twilight
withpoise
/serenity
for the Discord connection, which should fix the constant disconnects happening recently.This moves over to use Slash Commands on Discord which makes it easier to discover available commands, and avoids typos when executing them (or trying to).
- Switch over to twitch_api for Twitch.
Move from the
twitch-irc
crate totwitch_api
, as Twitch recommends using Helix (HTTP API) and EventSub (WebSocket API) over the classic IRC approach.This allows to track the stream live status which is the main reason for the move, as this is needed for an upcoming feature.
- Remove archer again.
- Remove broken docsearch.
- Log message on start/stop of a stream.
- Use SQLite for state storage.
- Use SQLite for stats storage.
- Use explicit indexmap removal methods.
- Don't unwrap when message detection fails.
An oversight. If the message detection reports an error or nothing was detected, then simply ignore the message instead of unwrapping and crashing the server.
- Restore root processing chain functionality.
During the bigger refactor the processing chain was broken in a way that owners can only use owner commands, admins only admin commands and regulars only user commands.
Fix the behavior to be like before, letting owners access all commands, admins the admin and user commands, and users only user commands (no change here).
- Name query
COUNT(*)
column.For
serde_rusqlite
to properly match the column to structs, it must be explicitly named, which is not the case for aggregation functions likeCOUNT(*)
. - Update existing cmd on conflict.
When adding a new command, and the command in fact already exists, thus, it's an update, replace the content of the command instead of failing.
- Reconnect on websocket close.
- Only create missing subscriptions.
Trying to create a new event subscription with the same type fails if one already exists (seems to be the case with reconnects). Thus, only create the subs that are missing.
- Don't split custom cmd content again.
A refactoring leftover that split the content again (due to the same naming of a variable for the whole message payload, before the refactor).
This is not needed anymore, and even truncated the content of the content, resulting in unexpected command contents.
- Redesign handler API.
Move the handler definitions to a separate module and make the text parsing a separate module. All handler logic operates on defined structs instead now.
- Use generic version of
NonZero
.Since Rust 1.79 the
NonZeroU64
is merely a type alias of the new generic variantNonZero<u64>
, so let's switch to it. - Clean up derives.
- Generate changelog with git-cliff.
Use git-cliff to generate some nice looking changelog (as long as the commit messages are somewhat meaningful).
- Avoid real network requests.
Avoid the network call to https://crates.io in the one and only test that runs it. This avoids failures to random network issues and makes the test run faster.
- (ci) Switch back to official cargo-deny action.
- Fix the README.md build badge.
- Fix new clippy lints.
- Switch to thin LTO.
- Bump Dockerfile Rust image version.
- Remove unneeded env var from Dockerfile.
- Update cargo-deny configuration.
- (docker) Use consistent keyword casing.
- (ci) Bump deny GH action to v2.
- (ci) Update Docker-related GH actions.
- Remove tracing event for twitch messages.
- Clean up cargo-deny config.
- Add justfile for common tasks.
- Move state module out of folder.
- Update changelog.