XMPP-Meetup Dresden "Bots mit XMPP" (2019-08-15)
In diesem Repo findet ihr einigen Beispielcode zum Thema "Bots in XMPP", basierend auf existierenden Bots in vier Sprachen: Go, Java, JavaScript, Python!
Go
Der Beispielcode für Go ist ein einfacher Bot, der auf einem HTTP-Interface einen Parameter entgegennimmt und diesen an eine Liste von Empfängern und MUCs weiterleitet. Beispiel: curl 'localhost:27001/?text=Textnachricht'
würde an die konfigurierten Empfänger die Nachricht Textnachricht senden.
Im Verzeichnis hermes-go
(setzt mind. Go 1.11 für go mod
voraus):
go mod tidy
(initialisiert go-xmpp)go build -o bin/hermes hermes.go
(baut das binary inbin/hermes
)- Kopieren der
config.example.json
zuconfig.json
und entsprechend anpassen. Hier kann der eigene, existierende Account genutzt werden (hermes nutzt dannhermes
als Ressource) ./bin/hermes -v -http
Java
Aus zeitgründen leider nicht vorbereitet
JavaScript
Eingeschränkte Variante von tigger
Im Verzeichnis tigger-javascript
(mit yarn oder npm installiert):
npm install
oderyarn install
node server.js [jid] [password] [MUIC-Id/Nick]
Python
Im Verzeichnis tooter-python
findet ihr einen Python-Bot, der zwischen einem XMPP-MUC und einer Mastodon-API kommuniziert. Hierzu wird asyncio
verwendet, zusammen mit den aioxmpp
und aiohttp
libraries, um asynchron gleichzeitig sowohl Events von der Mastodon-API zu parsen, als auch Nachrichten aus dem MUC an den Bot zu verarbeiten. In dieser vereinfachten Version funktioniert der stats
-Befehl im MUC, d. h. die Nachricht tooter: stats
im MUC wird vom Bot verarbeitet und ein Reply gesendet.
Zum Setup im Unterordner:
pipenv sync
pipenv shell
- Kopieren der
config.example.json
zuconfig.json
und entsprechend anpassen. python3 bot.py --debug
Wenn ihr den Bot selbst betreiben wollt, müsst ihr in Mastodon einen Token erzeugen (in den Settings), der eure Timeline lesen kann.