A place for all our bot adventures.
Go to file
2021-01-22 00:32:04 +01:00
GlossBot added description for glossbot 2021-01-13 14:52:00 +01:00
GreetBot added description for greetbot 2021-01-13 14:47:40 +01:00
LogBot small update 2021-01-22 00:31:35 +01:00
LogBot.old following camelcase style :) 2021-01-22 00:17:37 +01:00
RECbot.wip small update 2021-01-22 00:32:04 +01:00
SparkBot added description for sparkbot 2021-01-13 14:49:11 +01:00
StreamBot following camelcase style :) 2021-01-22 00:17:37 +01:00
TransitBot added description for transitbot 2021-01-13 14:50:21 +01:00
WhisperBot updated whisperbot description 2021-01-13 14:46:34 +01:00
.gitignore adding a gitignore 2021-01-10 16:04:48 +01:00
README.md Update 'README.md' 2021-01-22 00:23:51 +01:00
requirements.txt renaming streambot folder + adding requests as requirement 2020-02-06 17:30:34 +01:00

 _   _  _____        __  _____ ___    ____   ___ _____
| | | |/ _ \ \      / / |_   _/ _ \  | __ ) / _ \_   _|
| |_| | | | \ \ /\ / /    | || | | | |  _ \| | | || |
|  _  | |_| |\ V  V /     | || |_| | | |_) | |_| || |
|_| |_|\___/  \_/\_/      |_| \___/  |____/ \___/ |_|

How to play around with a local bot

These bots are written using slixmpp or xbotlib.

The idea is that you create a single python file (mybot.py for example) and using the slixmpp library, you write a single Python class which knows how to speak XMPP, join rooms, respond to commands etc (see ClientXMPP for more). Following the logbot/streambot example, you can create a command line interface using argparse and then start to run it on your own computer first for testing and fun (and not spamming everyone else until your bot is ready!).

If you want to play around with the streambot/logbot, do the following and answer the questions (you might want to create your own testing room to join beforehand):

$ pip3 install -r requirements.txt
$ python3 streambot/streambot.py

How to run a bot on the varia systers server

Make a bot

Firstly, clone the bots repository.

$ git clone https://git.vvvvvvaria.org/varia/bots
$ git clone ssh://gitea@vvvvvvaria.org:12345/varia/bots.git  # or ssh if you prefer (no passwords to type later!)

Create a new folder, say, mynewcoolbot and add your Python script to the folder. If your bot uses any Python dependencies, add them to the requirements.txt file in the repository (please use a == with the version so we can avoid things breaking later).

Push your changes

Push the changes you made to the server.

$ git add mynewcoolbot/bot.py

or

$ git add -A

But be sure you want to add all the files you added to the repo.

$ git commit -m "your commit message"

Something informative is best.

$ git push

You can also check the status of your repository by typing

$ git status

After your push, a git hook is pulling the changes: the bots folder on the server (which sits at /srv/gitea/clones/varia/bots) is updated.

After that, supervisor restarts all the bots.

Let the bot run continuously

To let the bot run all day all night, you can use a "service" and use the software "supervisor". It will take care of starting and stopping your bot when there are changes made to the code or at midnight when the backups are being made.

There is a "bots" config file, where you can add your new bot to.

To do this, log into the server:

$ ssh username@vvvvvvaria.org -p 12345

Open the config file using your Sudo rights:

$ sudo nano /etc/supervisor/conf.d/bots.conf

Copy/paste one of the other bot's details and add a new one to this file. This is how the details of the pub.club bot look like:

[program:logbot-pub.club]
directory = /srv/gitea/clones/bots
user = bot
environment=PATH="/srv/gitea/clones/bots/.venv/lib/python3.7/site-packages:%(ENV_PATH)s"
command =
  .venv/bin/python
  logbot/logbot.py
  -j bot@vvvvvvaria.org
  -p streaming
  -r afijeno@muc.vvvvvvaria.org
  -n logbot
  -o /var/www/logs/pub.club

Save and exit!

CTRL+X Y [enter]

Now, we need to restart supervisor itself, in order to activate these changes to the config:

$ sudo service supervisor restart

It will activate all the bots! And hopefully they work!!

You can check with:

$ sudo supervisorctl status bots:

If there are errors, have a look in:

$ ls /var/log/supervisor