|
|
|
```
|
|
|
|
_ _ _____ __ _____ ___ ____ ___ _____
|
|
|
|
| | | |/ _ \ \ / / |_ _/ _ \ | __ ) / _ \_ _|
|
|
|
|
| |_| | | | \ \ /\ / / | || | | | | _ \| | | || |
|
|
|
|
| _ | |_| |\ 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`
|