Skip to main content

A simple telegram bot for dirvish

Project description

# Dirvish Telegram Bot
This is a simple telegram-bot for the backupsoftware [dirvish](http://www.dirvish.org/) that will notify you if a backup has failed.

## Features
- Register with the bot
- add user to the bot (unregistered users are not able to do anything)
- subscribe/unsubscribe to failed backup notification
- show the current backup status

## Installation
To install this bot you have to run one of the following commands:
```
pip install dirvishbot
```
or
```
git clone https://github.com/jkuettner/dirvishbot.git && cd dirvishbot && pip install .
```

## Update
To update simply run
```
pip install --upgrade dirvishbot
```
or
```
git clone https://github.com/jkuettner/dirvishbot.git && cd dirvishbot && pip install --upgrade .
```

## Configuration
### 1. Create a new telegram bot
- Start conversation with `@botfather`
- Send `/newbot` and follow the instructions of `@botfather` until you got your bot token.

Further informations about how to create a new bot: https://core.telegram.org/bots#create-a-new-bot
### 2. Create `config.json`
You have to create a config.json with the telegram bot token in it. To do this you could copy the `config.example.json` to `/etc/dirvishbot/config.json` and replace the example `api_token` with yours:
```
cp /etc/dirvishbot/config.json.example /etc/dirvishbot/config.json
```
The `config.json` should look like the following:
```
{
"api_token": "123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ"
}

```
### 3. Trigger dirvishbot after the backup-process
The dirvishbot listens to the signal `SIGUSR1` to check the state of all backups and informs all subscribers if one of the backups has failed.

With the following line the dirvishbot will be notified:
```
bash -c 'kill -s SIGUSR1 $(< /var/run/dirvishbot.pid)'
```
You can put this line just before `exit $rc` in `/etc/dirvish/dirvish-cronjob` to start the backup-check after dirvish has finished.


## Run
If you have systemd installed the `dirvishbot.service` file will be placed to `/etc/systemd/system/dirvishbot.service` and you can start it with:
```
systemctl start dirvishbot
```
To check the status run
```
systemctl status dirvishbot
```

If you do not use `systemd` you can start this bot by running
```
dirvishbot &
```

## Usage
### First start
If you start the dirvishbot for the first time you have to register your telegram-user as admin.
To do this you need a token that will be saved in `/etc/dirvishbit/register`:

```
cat /etc/dirvishbot/register
```
```
This is your first start of the Bot.
Please register your admin-user within the next hour by sending the following to this Bot:
/register <TOKEN>
```

After the first start you have one hour to register an admin-user with this bot until the token invalidates and you have to restart the bot to get a new token.

**Note that the first user that will send the `/register <TOKEN>` to your bot will become the administrator.**

To reset the bot simple stop it, delete every line but `"api_token": ...` from the `config.json`-file and restart the bot.

### Commands
To run a command, send one of the following messages to your telegram-bot from your telegram-client:
- `/start`: Sends you a welcome message with an introduction (every user)
- `/register <TOKEN>`: registers the sender with this bot if `<TOKEN>` is valid. (every user)
- `/adduser`: generates a token for your contact that will be able to run the `/register`-command. The token invalidates after 24 hours. (only admins)
- `/subscribe`: enable notification of failed backups (every registered user)
- `/unsubscribe`: disable notification of failed backups (every registered user)
- `/status <AMOUNT>`: show the current status of the <AMOUNT> (DEFAULT=1) of last backups. (every registered user).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for dirvishbot, version 0.0.8
Filename, size File type Python version Upload date Hashes
Filename, size dirvishbot-0.0.8.tar.gz (20.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page