In diesem Repo findet ihr einigen Beispielcode zum Thema "Bots in XMPP", basierend auf existierenden Bots in vier Sprachen: Go, Java, JavaScript, Python!
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.jsonzuconfig.jsonund entsprechend anpassen. Hier kann der eigene, existierende Account genutzt werden (hermes nutzt dannhermesals Ressource) ./bin/hermes -v -http
Aus zeitgründen leider nicht vorbereitet
Eingeschränkte Variante von tigger
Im Verzeichnis tigger-javascript (mit yarn oder npm installiert):
npm installoderyarn installnode server.js [jid] [password] [MUIC-Id/Nick]
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 syncpipenv shell- Kopieren der
config.example.jsonzuconfig.jsonund 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.