bots/README.md
2023-05-22 21:05:29 +02:00

54 lines
1.7 KiB
Markdown

```
_ _ _____ __ _____ ___ ____ ___ _____
| | | |/ _ \ \ / / |_ _/ _ \ | __ ) / _ \_ _|
| |_| | | | \ \ /\ / / | || | | | | _ \| | | || |
| _ | |_| |\ V V / | || |_| | | |_) | |_| || |
|_| |_|\___/ \_/\_/ |_| \___/ |____/ \___/ |_|
```
> status: experimental
# Bots
The Varia XMPP botspace. These bots are written using
[`slixmpp`](https://slixmpp.readthedocs.io/) and sometimes also
[`xbotlib`](https://git.vvvvvvaria.org/decentral1se/xbotlib).
# Write your own
The idea is that you create a single python file and then using one of the
above libraries, you write a single Python class which knows how to speak XMPP,
join rooms, respond to commands etc. Probably the simplest place to start is by
reading the [`xbotlib` getting started guide](https://git.vvvvvvaria.org/decentral1se/xbotlib#user-content-getting-started).
# Deploy it on the Varia server
Add a configuration entry to `/etc/supervisor/conf.d/bots.conf` like the following.
```conf
[program:whisperbot]
directory=/srv/gitea/clones/bots/whisperbot.xbotlib
user=bot
autostart=true
autorestart=true
environment=PATH="/srv/gitea/clones/bots/.venv/lib/python3.7/site-packages:%(ENV_PATH)s"
command=/srv/gitea/clones/bots/.venv/bin/python3 whisperbot.py --password <YOUR-PASSWORD>
```
Then `systemctl restart supervisorctl` and then check if it comes up with
`supervisorctl status bots:`. Logs for all bots can be found in
`/var/log/supervisor/`. Finally, when you git push your bot changes, a git hook
will restart your bot.
# Stop and start bots
For example logbot:
`supervisorctl status bots:logbot`
`supervisorctl start bots:logbot`
`supervisorctl stop bots:logbot`
`supervisorctl restart bots:logbot`