Wenn der Bot im polling Modus betrieben wird, ruft er regelmäßig die API
von Telegram auf, um an ihn gesendete Nachrichten zu bekommen. Dies passiert
aber so häufig, dass die Verzögerungen kaum spürbar sind.
Im Webhook Modus kontaktieren Telegram-Server den Bot an der WebhookUrl
um ihn über neue Nachrichten zu informieren. Dafür ist also ein extern per HTTPS
erreichbarer Server nötig, mit entsprechend konfiguriertem Reverse-Proxy, der
HTTPS-Verschlüsselung übernimmt und Anfragen an den Port des Bots weiterleitet.
Der Webhook Modus wird aktiviert, falls in der config.ini
eine WebhookUrl
angegeben ist.
- entweder Docker
- oder Python 3
- Linux, Windows wurde nicht getestet
- config.ini mit config.ini.example erstellen
- virtualenv installieren und Abhängigkeiten mit pip install -r requirements.txt installieren
python main.py daemon
ausführen- um sofort alle Termine von der Website abzurufen, kann einmalig
python main.py scrape
ausgeführt werden. Dies erfolgt automatisch alle 5h.
Tipp: zu Testzwecken kann der Daemon mit dem Tool screen ausgeführt werden, damit er auch nach dem Schließen der SSH-Verbindung zum Server weiter läuft. Für stabilen Betrieb sollte aber ein SystemD service angelegt werden oder anderweitig sichergestellt werden, dass der Bot immer läuft und erreichbar ist.
- config.ini mit config.ini.example erstellen, hierbei sollte der Port auf 8080 gestellt bleiben
docker-compose -f docker-compose-local.yml build
ausführen, um das Docker image zu bauen- entweder
${PORT}
durch den gewünschten externen Port ersetzen oder eine .env Datei mit folgendem Inhalt erstellen:PORT=1234
Damit wird der Port 8080 auf diesen Port des hosts weitergeleitet und so der Betrieb per Webhook möglich. - Und abschließend den Container mit
docker-compose up -d
starten.
Wenn der Bot nur per polling betrieben werden soll, ist keine Portweiterleitung nötig.
Der entsprechende Bereich kann aus der docker-compose-local.yml
also komplett
auskommentiert oder gelöscht werden. Nur wenn ${PORT}
referenziert ist, aber
nirgendwo definiert ist, kommt es zu einem Fehler.