Adds fuzzy room search that can also set by exact ID, and refactors
the code to get room list for user into a common function and struct
for use by both commands.
continuous-integration/drone/push Build is passingDetails
- Do not display username pill with quoted HTML replies.
- Do not attempt to create matrix.to link in plain text replies.
- Move plain text formatting responsibility outside of matrix
send_message function.
continuous-integration/drone/pr Build is passingDetails
continuous-integration/drone/push Build is passingDetails
Can register an account with the bot to manage variables and stuff in
private room, and then separately "link" it with a password, which
makes it available to anything using the bot API (aka web app). Can
also unlink and unregister. Check command no longer validates
password. It just checks and reports your account status.
continuous-integration/drone/push Build is passingDetails
continuous-integration/drone/pr Build is passingDetails
Instead of automatically creating a user account entry for any user
executing a command, we use an Account enum which covers both
registered and "transient" unregistered users. If a user registers,
the context has the actual user instance available, with state and
everything. If a user is unregistered, then the account is considered
transient for the request, with only the username available.
continuous-integration/drone/pr Build is passingDetails
continuous-integration/drone/push Build is passingDetails
This cleans up the command parser a lot, as all of the one or two line
functions and associated imports have been removed. Unfortunately it
does make the command files larger, as two trait impls are required:
one for converting to Box<dyn Command>, and one for converting from
&str to the command type.
Fixes#66.
continuous-integration/drone/pr Build is passingDetails
continuous-integration/drone/push Build is passingDetails
- Adds a user_state table, currently only with active_room.
- A user must have an account to take advantage of state.
- Now, all users will get an 'account' even if they don't explicitly register.
- Bonus: converts user queries to compile-time checked macros.
To support these automatically created "accounts," the accounts table
now also has an account_status column, indicating if the user is
registered or not (or pending activation--future use).
The User model has been updated with extra properties from the state,
and the user is now carrried in the Context during command execution.
A user is ensured to be created before executing the command.
continuous-integration/drone/push Build is failingDetails
- If the room is end-to-end encrypted.
- If only the sending user and the bot are present in the room.
This lays groundwork for sensitive commands like registering a user
account with the bot.
continuous-integration/drone/push Build is passingDetails
continuous-integration/drone/pr Build is passingDetails
- 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.
continuous-integration/drone/push Build is passingDetails
continuous-integration/drone/pr Build is passingDetails
- 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).