more files

This commit is contained in:
Benedetta 2024-03-16 09:33:43 +01:00
parent 09f102138d
commit dc85f8b7c0
3 changed files with 247 additions and 3 deletions

192
.gitignore vendored Normal file
View file

@ -0,0 +1,192 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
*.annot
*.cmo
*.cma
*.cmi
*.a
*.o
*.cmx
*.cmxs
*.cmxa
# ocamlbuild working directory
_build/
# ocamlbuild targets
*.byte
*.native
# oasis generated files
setup.data
setup.log
# Merlin configuring file for Vim and Emacs
.merlin
# Dune generated files
*.install
# Local OPAM switch
_opam/
consume.py
send.py

View file

@ -1,3 +0,0 @@
# lanonna
La Nonna is our matrix bot

55
README.org Normal file
View file

@ -0,0 +1,55 @@
* 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