Bots für Mumble

Mumbot

Mumbot meldet sich wie ein Mensch mit eigenem Zertifikat an. Deshalb läuft er auf jedem normalen Mumble-Server, ohne Plugin und ohne Änderung an der Serverkonfiguration. Aus der Familie von Mumcord, Open Source unter AGPL-3.0.

v0.1.1

Zwei Bots, ein Programm

Beide stecken im selben Programm mumbot, für Linux, Windows, macOS und als Docker-Image.

Webhook-Bot

Monitoring, CI oder ein eigenes Skript schickt eine HTTP-Anfrage mit API-Schlüssel, und der Bot schreibt den Text in einen Mumble-Kanal.

  • Pro Schlüssel festlegen, in welche Kanäle er schreiben darf
  • Fett, kursiv, Code, Listen und Links per Markdown
  • Kanal-Passwörter, Wiederverbinden nach Abbrüchen und eine feste Identität per Zertifikat
  • Rate-Limit und eine klare Antwort, ob die Nachricht angekommen ist
Terminal
curl -X POST http://127.0.0.1:8080/message \
  -H 'X-API-Key: <your key>' \
  -d '{"channel": 1, "message": "**deploy** finished"}'
Doku →

Test-Bot

Ein geskripteter zweiter Teilnehmer für automatische Tests von Mumble-Clients. Mumcords eigene Tests laufen damit.

  • Chat, Status, Rechte und Moderation steuern und auf Bedingungen warten
  • Sprache abspielen, aufnehmen und den Pegel prüfen, mit echtem Opus
  • Ein Lasttest füllt einen lokalen Server mit bis zu 1000 Nutzern
  • Exit-Code 0 heißt bestanden: passt in jede CI
Terminal
printf '%s\n' 'join Lobby' 'say "<b>hello</b>"' \
  'expect message --from Alice --contains hi' \
  | mumbot --port 44738 --name Bob script
Doku →

Download

Das Archiv enthält das Programm mumbot, die README und eine Beispielkonfiguration bot.example.toml.

Oder als Docker-Image für amd64 und arm64:

Docker
docker run -d --name mumbot \
  -v "$PWD/bot.toml:/config/bot.toml:ro" \
  -v mumbot-data:/data -p 127.0.0.1:8080:8080 \
  ghcr.io/mumcord/mumbot:0.1.1

Fertige Docker-Compose-Beispiele: Webhook-Bot, Webhook-Bot mit eigenem Mumble-Server zum Ausprobieren und Test-Bot in der CI →

Prüfsummen (SHA256SUMS) →

Roadmap

Mumbot wird wie Mumcord in Epics gebaut. Epic 2 ist ein Vorschlag aus den offenen Issues und wird noch genau geplant.

  1. Epic 0

    fertig v0.1.0

    Test-Bot

    Der geskriptete Bot aus Mumcords Tests, jetzt als eigenes Programm.

    • Chat, Status, Rechte und Moderation, Warten auf Bedingungen und ein Skript-Modus
    • Sprache abspielen, aufnehmen und Pegel prüfen, mit Opus wie in Mumcord
    • Lasttest mit bis zu 1000 Nutzern auf einem lokalen Testserver
  2. Epic 1

    fertig v0.1.0

    Webhook-Bot

    Nachrichten von außen in einen Mumble-Kanal.

    • HTTP-API mit API-Schlüsseln und erlaubten Kanälen pro Schlüssel
    • Markdown, Kanal-Passwörter, Wiederverbinden und Rate-Limit
    • Programme für Linux, Windows und macOS und ein Docker-Image
    • Seit 0.1.1: Docker-Compose-Beispiele und eine Doku zu Konfiguration, Kommandozeile, HTTP-API und Sicherheit
  3. Epic 2

    als Nächstes

    Module, Musik und Verlauf

    Aus einem Bot wird ein Baukasten.

    • Module: per Konfiguration oder Kommandozeile wählen, welche Bots laufen, in einem Programm und einem Image
    • Musik-Bot: MP3s oder Links per HTTP schicken, der Bot spielt sie mit Warteschlange im Sprachkanal
    • Verlaufs-Bot: speichert den Chat der Kanäle, die er sehen darf, und gibt ihn an Mumcord-Nutzer weiter, die offline waren. Private Nachrichten nie
    • Nachrichtenkarten: Der Webhook schickt Alarme mit Titel, Statusfarbe, Graph und Link, die Mumcord als Karte zeigt
    • Bitrate für Sprache und Musik einstellbar, nie über dem Limit des Servers
    • Peer-Modul: meldet die Nutzer des Servers bei einem mumpeer-Relay an und teilt Mumcord mit, dass es das Relay gibt
  4. Danach

    später

    Ideen

    Noch nicht geplant, aber vorgemerkt.

    • Ein Bot, der Chat liest und auf Befehle antwortet
    • Sprachausgabe oder Warntöne im Kanal
    • Ein Bot für mehrere Server oder mit mehreren Identitäten
    • Flüstern und private Nachrichten, Schlüssel ohne Neustart tauschen, eingebautes TLS
    • Das Zertifikat des Servers beim ersten Kontakt merken und Änderungen ablehnen

Idee für einen Bot?

Wünsche landen in den Issues von Mumbot auf GitHub.

Idee vorschlagen Quellcode auf GitHub →