Commit Graph

180 Commits

Author SHA1 Message Date
projectmoon e539dcac1f Move migrations to sqlite directory. Remove in-memory temp db until refinery supports sqlx.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2021-05-18 14:50:49 +00:00
projectmoon 9f97a6cb43 Implement variable count; fix listing all variables returning values for all users.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2021-05-18 14:27:15 +00:00
projectmoon a665293268 Fix recording of room users, better logging.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
- Fix constraint violations when recording users in rooms (migration fix).
 - Switched to tracing_subscriber to get log events from matrix SDK.
 - Remove "Applying migration" messages, and rely on refinery to log instead.
 - Log when an outgoing error is encountered.
2021-05-17 23:12:27 +00:00
projectmoon 66fb6e7cf8 Fix various issues with room events and related logic.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
- Processing events multiple times when re-joining rooms.
 - Always thinking we've not processed an event/constraint
   violations (arguments were reversed in record_event).
 - Not handling errors when fetchin users in a room, and instead
   just suppressing them. Now, we handle errors!
 - Also update dependencies (attempt to fix ID too big bug, but no
   fix).
2021-05-16 22:24:27 +00:00
projectmoon bfc5609ab6 Add proper constraints to db tables. Report errors when listing users.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2021-05-16 21:39:19 +00:00
projectmoon 9798821b7b Implement room and dbstate for sqlite.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2021-05-16 14:29:57 +00:00
projectmoon cf9ce63892 Replace application-level database connectivity.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
- Some database methods not yet implemented.
 - Unit tests create temp files that are not cleaned up (but they should be).
2021-05-15 23:45:30 +00:00
projectmoon 6b6e59da2e Initial SQLx implementation (variables). not yet wired up to bot.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
- Adds migrations for the necessary tables.
 - Implements the user variables database functions.
 - Adds sqlx metadata for 'offline' use so we can build without a database.
2021-05-15 15:27:40 +00:00
projectmoon b894fb83db Update binary entrypoint crate imports after rename. 2021-05-14 22:25:09 +00:00
projectmoon 30f800eb4a Relicense to AGPL, change project name.
continuous-integration/drone/push Build is running Details
2021-05-14 22:07:16 +00:00
projectmoon 2096af2512 Show username pill when executing multiple commands. 2021-05-13 22:31:38 +00:00
projectmoon 490d17790a Add a few more aliases for cthulhu advancement rolls.
continuous-integration/drone/push Build is passing Details
2021-05-13 22:12:47 +00:00
projectmoon 38fbef4101 Update help; add call of cthulhu.
continuous-integration/drone/push Build is passing Details
2021-05-13 21:47:35 +00:00
projectmoon 0396911c56 Remove extraneous <p> tags in dice roll outputs.
continuous-integration/drone/push Build is running Details
2021-05-13 21:29:44 +00:00
projectmoon c4e0393d99 Update variables on advancement rolls.
continuous-integration/drone/push Build is passing Details
2021-05-13 21:16:41 +00:00
projectmoon d67328ac6b Cthulhu dice only take one amount now 2021-05-13 20:24:17 +00:00
projectmoon ec66bfa3d6 Add parse_single_amount 2021-05-13 20:06:37 +00:00
projectmoon 8939d6debd Update dependencies.
continuous-integration/drone/push Build is passing Details
2021-05-13 19:48:29 +00:00
projectmoon 8d1a1a5ca6 Update dependencies. 2021-04-20 21:19:47 +00:00
projectmoon ba6a4c9679 Update matrix SDK to latest with Room enum 2.0
continuous-integration/drone/push Build is passing Details
2021-03-22 15:01:49 +00:00
projectmoon e5431a587d Support complex expressions on CoC advancement rolls. (#55)
continuous-integration/drone/push Build is passing Details
Also remove todo, update some CoC command descriptions.

Fixes #54.
Co-Authored-By: projectmoon <projectmoon@noreply.git.agnos.is>
Co-Committed-By: projectmoon <projectmoon@noreply.git.agnos.is>
2021-03-18 20:54:49 +00:00
projectmoon 85557c0382 Split handling of comand results from execution.
continuous-integration/drone/push Build is passing Details
2021-03-15 20:27:57 +00:00
projectmoon d30d39ff1e Only consume max allowed commands + 1 when dealing with multiple commands 2021-03-15 20:13:27 +00:00
projectmoon 8e4eb574d2 Update to latest matrix SDK and other dependencies.
continuous-integration/drone/push Build is passing Details
2021-03-15 20:10:42 +00:00
projectmoon 67291e6deb Switch to Duration::from_secs, because we don't need nanos.
continuous-integration/drone/push Build is passing Details
2021-02-10 20:30:17 +00:00
projectmoon 7e23f80e42 Get user list: replace format! with direct string conversion. 2021-02-10 20:25:42 +00:00
projectmoon d813198cb0 Reply with executed command as quote (single commands only).
continuous-integration/drone/push Build is passing Details
2021-02-09 22:22:09 +00:00
projectmoon 693167a581 Log when we are performing initial sync. 2021-02-09 21:59:32 +00:00
projectmoon 9ab65b8943 Update env_logger, rand, phf, itertools to newer semvers.
continuous-integration/drone/push Build is passing Details
2021-02-09 21:56:13 +00:00
projectmoon ef4f1ef02f Small code cleanup in matrix.rs
continuous-integration/drone/push Build is passing Details
2021-02-08 20:14:11 +00:00
projectmoon d42e075c5c Update dependencies.
continuous-integration/drone/push Build is passing Details
2021-02-07 21:58:22 +00:00
projectmoon b0707dff05 bot: Move multi-failure response join() call into the format!().
continuous-integration/drone/push Build is passing Details
2021-02-07 21:42:32 +00:00
projectmoon 304c91c69d Rename CommandResult to ExecutionResult
continuous-integration/drone/push Build is passing Details
2021-02-07 21:39:21 +00:00
projectmoon 94be4d2578 Avoid key clone when deleting variables. Minor db code cleanup.
continuous-integration/drone/push Build is passing Details
2021-02-07 21:16:58 +00:00
projectmoon 14f8bc8b39 Reuse device ID generated by matrix SDK after first login.
continuous-integration/drone/push Build is passing Details
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.
2021-02-07 14:21:28 +00:00
projectmoon 932e06ad91 Fix database error name. Improve dice number conversion error message.
continuous-integration/drone/push Build is passing Details
2021-02-03 23:27:47 +00:00
projectmoon b7ccd4e7ad Refactor dice amount parser to reusable parsers.
This follows the example in the Combine documentation to use impl
trait return types so we can isolate the parsers into their own
functions.
2021-02-03 23:27:14 +00:00
projectmoon 9a5a18268c Parsing huge numbers are now errors, not variables.
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.
2021-02-03 23:23:03 +00:00
projectmoon f5a8e16ce0 Slight refactor of calculate_dice_amount. Lazy error handling.
continuous-integration/drone/push Build is passing Details
Use unwrap_or_else instead of unwrap_or to prevent unnecessary error
string creation. Also some changes to make the code a bit more
readable.
2021-02-02 22:02:43 +00:00
projectmoon 7512ca0694 Allow up to 50 commands per message.
continuous-integration/drone/push Build is passing Details
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.
2021-02-02 21:45:59 +00:00
projectmoon 042ecc40e0 Properly format dice plurality in CofD dice pools.
continuous-integration/drone/push Build is passing Details
Fixes #30.
2021-01-31 14:57:18 +00:00
projectmoon df54e6555a Use 'username bubbles' in responses instead of straight user ID.
continuous-integration/drone/push Build is passing Details
2021-01-31 14:46:53 +00:00
projectmoon b3c4d8a38c Centralize plain text formatting at point of message sending.
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
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.
2021-01-31 14:12:09 +00:00
projectmoon a4e66a0ca6 Basic output for multiple command failures.
continuous-integration/drone/pr Build is failing Details
continuous-integration/drone/push Build is passing Details
Also replace newlines with <br/>s in HTML output.
2021-01-31 08:15:22 +00:00
projectmoon d0c6ca3de8 Print out how many commands failed in a multi-command scenario.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
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.
2021-01-30 22:13:06 +00:00
projectmoon 055bad3a46 Move a type on collect() to variable assignment
continuous-integration/drone/push Build is failing Details
2021-01-30 22:12:44 +00:00
projectmoon 16eb87e50f Convert command execution to use results.
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build is passing Details
2021-01-30 14:28:14 +00:00
projectmoon 1b0003ff1b Upgrade to Matrix SDK latest (Store Rewrite) and Tokio 1.0
continuous-integration/drone/push Build is passing Details
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.
2021-01-30 12:54:47 +00:00
projectmoon 297a8454f6 Avoid cloning when counting successes.
continuous-integration/drone/push Build is passing Details
2020-12-18 14:16:22 +00:00
projectmoon c9c80b974c Tests for dice pool formatting. 2020-12-17 21:14:43 +00:00