A very silly Matrix bot written in C.
To use it, create an account, start the machinatrix_matrix
program, join a
room, and send commands prefixed with an IRC-style mention of the user name.
Current supported commands:
ping
: pongword
: random worddamn
: random curseabbr <acronym> [<dictionary>]
: random de-abbreviationbard
: random Shakespearean insultdlpo <term>
: lookup etymology (DLPO)wikt <term> [<lang>]
: lookup etymology (Wiktionary)parl
: use unparliamentary languagetr <word> [<lang>]
: translate word (Wiktionary)stats
: print statistics
A C compiler and a UNIX programming environment are required, along with the following libraries (tested versions in parentheses):
- libcurl (7.55.1)
- tidy-html5 (5.6.0)
- cjson (1.7.10)
The main program, machinatrix
, is responsible for executing the commands and
can be tested without involving the Matrix server. Commands are accepted as
arguments. If none is provided, they are read from stdin
.
$ ./machinatrix ping
pong
$ ./machinatrix
ping
pong
ping
pong
A second binary, machinatrix_matrix
, connects to the server, listens for new
messages, and replies. It executes the machinatrix
program to handle the
commands.
$ ./machinatrix_matrix \
--server matrix.example.com \
--user @machinatrix:matrix.example.com \
--token /path/to/token_file
Arguments after --
, if present, are forwarded to machinatrix
.
numeraria
is an optional statistics database service. It uses an SQLite
database to record commands.
$ ./numeraria --db-path numeraria.sqlite --bind-unix numeraria.sock &
$ ./machinatrix --numeraria-unix numeraria.sock
ping
pong
ping
pong
stats
numeraria
2 "ping" ""
To use with machinatrix_matrix
, use the extra machinatrix
arguments:
$ ./machinatrix_matrix \
# regular arguments \
-- --numeraria-unix numeraria.sock