bitkeks / xmpp-meetup-examplecode

Dresden XMPP-Meetup Beispielcode

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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):

  1. go mod tidy (initialisiert go-xmpp)
  2. go build -o bin/hermes hermes.go (baut das binary in bin/hermes)
  3. Kopieren der config.example.json zu config.json und entsprechend anpassen. Hier kann der eigene, existierende Account genutzt werden (hermes nutzt dann hermes als Ressource)
  4. ./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):

  1. npm install oder yarn install
  2. 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:

  1. pipenv sync
  2. pipenv shell
  3. Kopieren der config.example.json zu config.json und entsprechend anpassen.
  4. 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.

About

Dresden XMPP-Meetup Beispielcode

License:GNU General Public License v3.0


Languages

Language:Python 39.6%Language:Go 32.0%Language:JavaScript 16.5%Language:Java 11.8%