* La Nonna La Nonna is a matrix bot that we use on the goulash.lezzo.org matrix server. It's an appreciation to our dear grandmothers who spent so much time with us, caring even about the smallest things. * How it works The La Nonna bot always accepts invites to a matrix channel. It listens to commands in the irc format, starting with '!' and followed by a lowercase word. Every time La Nonna receives a sentence starting with the command token it splits it into two parts, the command keyword and the arguments. See lanonna/commands.py for the parsing routine. La Nonna sends the parsed message to the default exchange of a RabbitMQ instance, using as routing key the command keyword. The message has the following JSON format, as you can see from lanonna/protocol.py: #+begin_src command: str content: str source_message_id: str sender_nick: str room_id: str #+end_src La Nonna has a static list of commands keyword that are accepted and then forwarded to RabbitMQ. For every other keyword not in this list, a help message is sent to the originating matrix channel. La Nonna expects other software from this repo to consume the message from RabbitMQ. La Nonna consumes messages from the "lanonna" exchange and expects messages in this format, as you can see from lanonna/protocol.py: #+begin_src content: str source_message_id: str | None room_id: str as_reply: bool # requires source_message_id as_markdown: bool #+end_src ** Configuration La Nonna and every other RabbitMQ consumer in this repo, will read a single configuration file named /etc/lanonna.toml that contains a subsection for every RabbitMQ consumer. Example configuration file: #+begin_src [lanonna] matrix_url = "https://matrix.example.org" matrix_username = "@lanonna:matrix.example.org" matrix_password = "theol'days" mq_url = "amqp://rabbitmq:rabbitmq@rabbimq.example.org/" [pam] forgejo_base64 = "dGhlb2wnZGF5cwo=" mq_url = "amqp://rabbitmq:rabbitmq@rabbitmq.example.org/" #+end_src