efcbd3ad4e9c975d4aaaf8514075913d364b8dfd
:B:illBöt
To 🅱️reserve and prötec
This will be a Matrix bot used to track informal debts between some (small) group of individuals.
its goals are (in order of importance):
- any party can recalculate their position(s) even when the bot is unreachable.
- support 1-to-1 and 1-to-many "transactions".
- transactions may be visible to only the direct parties involved.
- upgradable without any manual migration.
- optional reminders for outstanding debts.
but so far, :B:illBöt achieves exactly 0 of these 🙃
Plan (UX)
contingent upon what the Matrix/Appservice protocol and servers make available, below is an example of how this bot might work:
- open a payment channel with some other individual, if you & he have no history of transactions.
- DM @billbot:uninsane.org with a message in format:
>
!transact @user:host [...]
- the billbot will create a room with itself, you, and all listed users.
- in this room, any user may post a message of the format
!request @user:host [...] $NNN.MM
- the bot will post in the group a message to acknowledge each transfer: > @user:host owes @other:host $NNN.MM
- request to see your position(s):
!position [@user:host [...]]
- the bot will post your position.
- you can initiate this from any DM involving the bot. so other parties don't need to see the bot's response, but still can, if you send this message to the group.
- mark a debt as paid:
!sent @user:host $NNN.MM
- bot will post in the same room: > @user:host paid @other:host $NNN.MM
- maybe state the remaining position? > @user:host now owes $other:host $X.YY
Development/Hacking
this project is built with cargo, the Rust package manager. simply run:
$ cargo build
$ ./target/debug/billbot
it can also be built with nix:
$ nix build
$ ./result/bin/billbot
a nix development environment (i.e. access to the correct toolchain) can be entered like so:
$ nix develop
after which ordinary cargo commands can be used:
nix-shell> cargo build
nix-shell> ./target/debug/billbot
refer to <./doc/resources.md> for code-related documentation.
Description
Languages
Rust
77.9%
Nix
22.1%