continuous-integration/drone/push Build is passingDetails
Adds new db tree for simple global state values (which also lays
foundation for other stuff), and stores device ID in that tree after
first login. The ID is then reused on subsequent runs of the
application.
This is simpler than storing device ID in config file.
Fixes#9.
continuous-integration/drone/push Build is passingDetails
- Properly reject large numbers outside bounds of i32 when rolling dice.
- Avoid unnecessary clone of error message when calculating dice amounts.
- Allow up to 50 commands to be executed per message.
- Show failed commands with errors when executing multiple commands.
- Properly format dice plurality when rolling CofD dice pools.
- Use 'username pills' instead of raw user ID in response messages.
- Update matrix SDK to latest.
- General code reorganization for better maintainability.
Fixed the dice amount parsing code to propagate a parsing result
through the parser, while properly handling string to i32 conversion.
We now only attempt to convert to i32 if all characters in the
expression are numeric.
This commit also refactors the dice parsing by moving most of the
parsing closures into separate functions, which makes the parsing
function itself more readable. Some variable names were also changed,
for further clarity.
Fixes#21.
continuous-integration/drone/push Build is passingDetails
If the amount of commands in a single message is greater, the bot will
now return an error. Includes slight refactoring of command execution
code to make use of streams for async iter-like mapping of the command
list.
Fixes#24.
continuous-integration/drone/pr Build is passingDetails
continuous-integration/drone/push Build is passingDetails
Instead of relying on all parts of the application to construct both
HTML and plain-text responses, we now construct only HTML responses,
and convert the HTML to plain text right before sending the message to
Matrix.
This is a first iteration, because the plain text has a few extra
newlines than it should, created by use of nested <p> tags.
continuous-integration/drone/push Build is passingDetails
continuous-integration/drone/pr Build is passingDetails
The number of failing commands are now printed out when at least one
command in a multi-command execution fails. This commit does not
introduce printing out WHICH commands failed, nor their error
messages.
There was also some minor refactoring to move command response
handling into their own functions (one for single response, one for
multiple) so that the code is more readable.
continuous-integration/drone/push Build is passingDetails
This upgrade introduces a handful of breaking changes in the Rust
Matrix SDK.
- Some types have disappeared and changed name.
- Some functions are no longer async.
- Room display name now has a Result type instead of just returning
the value.
- Client state store has breaking changes (not really a big deal).
This required introduction of a new type to store room information
that we are interested in on the context struct. This new RoomContext
is required mostly due to unit tests, because it is no longer possible
to instantiate the Room type in the Matrix SDK.
continuous-integration/drone/push Build is passingDetails
Add get/insert functions for RoomInfo in the rooms db.
Move 'bot joins room' code to single method, so we can also record a
RoomInfo struct into the database.