wollBot unterstützt Gruppen dabei, passende Schwierigkeitsstufen für Mythic+-Dungeons zu finden. Dafür verbindet der Bot eingetragene Charaktere mit Daten aus der Blizzard-API und berücksichtigt die bisherigen, innerhalb des Zeitlimits abgeschlossenen Durchläufe der Gruppe. Diese Seite zeigt die technische Idee und Umsetzung – nicht die vollständige Einrichtung des Bots.
Projektstatus: wollBot befindet sich noch in Entwicklung und ist derzeit auf ausdrücklich freigegebene Discord-Server begrenzt. Die Beispiele beschreiben die aktuelle Funktionsweise; Verfügbarkeit und Spieldaten können sich ändern.
Überblick
wollBot ist mit Python und discord.py entwickelt. Die Anwendung kommuniziert mit Discord und der offiziellen Blizzard-API für die europäische World-of-Warcraft-Region. PostgreSQL speichert Einstellungen, Charakterzuordnungen und abgerufene Mythic+-Daten. Ein Zwischenspeicher reduziert wiederholte Anfragen.
- Discord
- Befehle, Auswahlmenüs und Ergebnisse anzeigen.
- Python und discord.py
- Benutzeraktionen verarbeiten und die Bot-Funktionen ausführen.
- Blizzard-API
- Charakterprofile, Dungeons und Mythic+-Ergebnisse bereitstellen.
- PostgreSQL
- Einstellungen und bereits ermittelte Daten dauerhaft speichern.
- Zwischenspeicher
- Häufig benötigte Informationen schneller bereitstellen.
- systemd
- Den Bot als Hintergrunddienst betreiben.
Es ist keine Verknüpfung mit einem persönlichen Battle.net-Konto erforderlich. Der Bot greift mit eigenen Anwendungszugangsdaten auf die Blizzard-API zu.
Funktionen in Discord
Die Bedienung erfolgt über Discord-Befehle und interaktive Auswahlfelder.
/help- Zeigt eine kurze Übersicht der verfügbaren Befehle.
/setup- Legt die bevorzugte Sprache fest: Deutsch oder Englisch.
/char- Fügt Charaktere hinzu, verwaltet sie und zeigt deren beste zeitlich erfolgreiche Dungeon-Durchläufe.
/keys- Schlägt für die aktiven Charaktere der eigenen Sprachkanal-Gruppe passende Dungeon-Stufen vor.
Bis zu zehn Charaktere pro Benutzer können gespeichert werden; einer davon ist jeweils aktiv. Die Charakterangaben werden bei Blizzard geprüft. Die Spracheinstellung gilt serverübergreifend für den jeweiligen Benutzer und beeinflusst auch die angezeigten Dungeon-Namen.
Einstellungen und Charakterverwaltung werden als private Discord-Antworten dargestellt. Bei /keys erscheint das fertige Gruppenergebnis dagegen im Textkanal, in dem der Befehl gestartet wurde. Warte- und Fehlermeldungen bleiben privat.
Wie die Dungeon-Empfehlungen entstehen
Die zentrale Funktion ist /keys. Der Bot berücksichtigt die aktiven Charaktere der Teilnehmer im selben Discord-Sprachkanal. Personen ohne aktiven Charakter oder Bot-Accounts werden dabei übersprungen.
Der Ablauf ist vereinfacht:
- Gruppe bestimmen: wollBot prüft die Teilnehmer des Sprachkanals und ihre aktiven Charaktere.
- Ergebnisse abrufen: Für jeden unterschiedlichen Charakter werden vorhandene Mythic+-Daten geladen – möglichst aus dem Zwischenspeicher, sonst aus der Blizzard-API.
- Beste Durchläufe vergleichen: Pro Dungeon zählt die höchste Stufe, die der jeweilige Charakter innerhalb des Zeitlimits geschafft hat.
- Vorschlag berechnen: Aus diesen persönlichen Bestwerten wird der niedrigste vorhandene Wert plus eins als Gruppenempfehlung ausgewählt.
Beispiel: Zwei Charaktere haben denselben Dungeon rechtzeitig auf Stufe 7 beziehungsweise Stufe 10 abgeschlossen. wollBot schlägt Stufe 8 vor.
Charaktere ohne einen entsprechenden zeitlich erfolgreichen Durchlauf werden für diesen Dungeon nicht als Stufe 0 gewertet.
Die Auswahl der Daten erfolgt anhand der höchsten Saison, die für den jeweiligen Charakter in dessen Blizzard-Profil vorhanden ist. Das muss nicht immer die global aktuelle Saison sein.
Wichtig: Die vorgeschlagene Stufe beschreibt einen Ansatzpunkt für die Gruppe. Sie garantiert weder eine Verbesserung der Mythic+-Wertung für jedes Mitglied noch, dass jemand den entsprechenden Schlüssel gerade im Inventar besitzt.
Technischer Aufbau
Der Bot trennt die Kommunikation mit Discord von der eigentlichen Berechnung, dem Datenzugriff und der Verarbeitung externer Antworten.
Die Verarbeitung ist in getrennte Aufgabenbereiche aufgeteilt: Discord-Oberfläche, Charakterverwaltung und Gruppenberechnung, Blizzard-Anbindung, Datenbank, Zwischenspeicher sowie Schutz- und Diagnosefunktionen.
Datenbankzugriffe und externe HTTP-Anfragen werden so ausgeführt, dass sie die laufende Verarbeitung neuer Discord-Ereignisse möglichst nicht blockieren. Für die Datenbank wird ein gemeinsamer Verbindungspool verwendet, der bei Bedarf geöffnet wird. Schreibvorgänge werden kontrolliert abgeschlossen oder bei Fehlern zurückgenommen.
Beim Beenden versucht der Bot, ausstehende zusammengefasste Messwerte zu speichern und Datenbankverbindungen ordentlich zu schließen.
Daten und Zwischenspeicher
PostgreSQL speichert unter anderem die Discord-Benutzerkennung mit der Sprachauswahl, die Zuordnung zu World-of-Warcraft-Charakteren, die Auswahl des aktiven Charakters sowie abgerufene Saison-, Dungeon- und Bestleistungsdaten.
Damit nicht jede Aktion dieselben Informationen erneut bei Blizzard anfordert, verwendet wollBot mehrere Zwischenspeicher:
- Sprache und Charakterliste
- Für kurze Zeit im Arbeitsspeicher vorhalten.
- Mythic+-Daten
- Kurzzeitig im Arbeitsspeicher speichern; aktuelle Datenstände zusätzlich in PostgreSQL ablegen.
- Servernamen der Spielwelt
- Länger zwischenspeichern und bei Bedarf lokal vorhalten.
- Blizzard-Zugangstoken
- Nur im Arbeitsspeicher halten und vor Ablauf erneuern (meist 24 Stunden).
Das Entfernen einer Charakterzuordnung löscht nicht automatisch die gemeinsam gespeicherten Mythic+-Daten.
Die normale Reihenfolge für Mythic+-Daten lautet: Arbeitsspeicher → aktueller Datenbankstand → Blizzard-API. Bei bestimmten API- oder Verbindungsproblemen kann auch ein älterer gespeicherter Datenstand verwendet werden, damit nicht jede Abfrage vollständig ausfällt.
Das verbessert die Verfügbarkeit, hat aber eine Grenze: Aktuell gibt es für diese Ausweichdaten kein festes Höchstalter. Entsprechend können angezeigte Ergebnisse bei einer Störung deutlich älter sein als erwartet.
Schutz vor Überlastung
wollBot begrenzt sowohl Benutzeraktionen innerhalb von Discord als auch Anfragen an Blizzard. Beides wird getrennt gezählt: Ein Discord-Befehl kann mehrere API-Anfragen benötigen oder dank Zwischenspeicher ganz ohne neue Anfrage auskommen.
- Aktionen erhalten begrenzte Budgets pro Benutzer und Discord-Server.
- API-Anfragen unterliegen eigenen Grenzen sowie einer Begrenzung gleichzeitig laufender Verbindungen.
- Meldet Blizzard eine vorübergehende Überlastung, berücksichtigt der Bot eine von Blizzard angegebene Wartezeit.
- Gleichzeitige
/keys-Abfragen im selben Sprachkanal und parallele Änderungen desselben Benutzers werden eingeschränkt. - Die Gruppenauswertung ist auf höchstens 40 Teilnehmer im Sprachkanal ausgelegt.
Diese Regeln sollen unnötige Mehrfachabfragen vermeiden und verhindern, dass einzelne Aktionen den Bot oder die externe API übermäßig beanspruchen.
Protokolle und Telemetrie
Für den Betrieb unterscheidet wollBot zwischen Fehlerprotokollen und zusammengefassten Messwerten.
Fehlerprotokolle helfen dabei, Probleme im Programm zu erkennen. Die dokumentierte Fehlerausgabe verzichtet dabei auf vollständige Fehlerbeschreibungen, Quellcodezeilen und lokale Variablen. Meldungen externer Bibliotheken (wie zum Beispiel discord.py) werden auf allgemeine Formulierungen reduziert.
Die Telemetrie fasst Vorgänge minutenweise in UTC zusammen, beispielsweise:
- API-Anfragen
- Wie häufig Blizzard angefragt wurde und ob Anfragen erfolgreich waren.
- Zwischenspeicher
- Wie häufig Daten ohne erneute externe Anfrage bereitstanden.
- Begrenzungen
- Wie häufig Budgets genutzt oder Anfragen abgewiesen wurden.
- Bot-Aktivität
- Zusammengefasste Anzahl bestimmter Verarbeitungsvorgänge.
Die Messwerte werden global und teilweise getrennt nach Discord-Server erfasst, nicht als Einzelhistorie pro Benutzer oder pro HTTP-Anfrage. Serverbezogene Werte sind dabei nicht automatisch anonym. Während der Entwicklung findet eine Aufbewahrung dieser Telemetrie von 14 Tagen statt; der Bot selbst enthält kein eigenes Statistik-Dashboard.
Grenzen und Besonderheiten
wollBot ist auf einen überschaubaren Funktionsumfang für World of Warcraft Mythic+ in der EU-Region ausgerichtet. Die Bedienoberfläche ist auf Deutsch und Englisch verfügbar. Discord-Direktnachrichten und nicht freigeschaltete Server werden derzeit nicht unterstützt.
Die Qualität einer Empfehlung hängt von den verfügbaren Blizzard-Daten ab. Neu abgeschlossene Dungeons können mit Verzögerung erscheinen (meistens nach Logout eines Charakters); bei einer vorübergehenden Störung können gespeicherte Daten verwendet werden. Einzelne fehlgeschlagene Charakterabfragen können außerdem zu einem ausdrücklich unvollständigen Gruppenergebnis führen.