Ein Bot für die Apex-Legends-Community von JoLas – von der Mitspielersuche bis zum Giveaway.
Die Idee
JoLas war der größte deutschsprachige Apex-Legends-YouTuber, mit im Peak 27.100 Abonnenten. Ich war über Jahre in mehreren Rollen dabei: Ich habe den Livechat, die Kommentare und den Discord moderiert, über 70 Videos mit ihm gedreht und im Hintergrund an Ideen, Recherche und Thumbnails gearbeitet. Weil ich den Server als Moderator von innen kannte, wusste ich genau, wo es hakte – daraus ist der Bot entstanden, den ich allein gebaut und betrieben habe.
Angefangen hat es im Januar 2022: In fünf Tagen stand die erste Version, die im Discord die aktuelle Map-Rotation und den Serverstatus von Apex anzeigte. Daraus wurde über die nächsten zwei Jahre ein Bot, der den Alltag auf dem Server übernommen hat – auf einem Server mit im Peak 6.371 Mitgliedern (April 2023).
Das Herzstück: die Spielersuche
Auf einem großen Apex-Server ist die häufigste Frage: „Sucht noch wer Mates?" Genau dafür war die Spielersuche da. Kein anderer Teil des Bots hat so viel Zeit gefressen, allein dieser Teil umfasst rund 3.500 Zeilen Code.
So lief es ab:
- Man betritt einen Sprachkanal für den gewünschten Modus, zum Beispiel Duos, Trios, Ranked, Arena Ranked, TDM oder 1-gegen-1. Der Bot erstellt sofort einen eigenen Kanal und verschiebt einen hinein.
- Im Kanal-Chat gibt es einen Knopf „🔎 Spielersuche". Ein Klick darauf postet eine Anzeige im Suchkanal, über die andere dazukommen.
- Wer beitritt, wird automatisch mit seinem Apex-Profil vorgestellt: Level, Plattform, aktueller Rang mit Punkten und der Name, unter dem man ihn im Spiel als Freund hinzufügen kann.
- Im Ranked-Modus bestimmt der Kanalbesitzer, wer den Kanal überhaupt sehen darf: nur der eigene Rang, der eigene und ein tieferer, der eigene und ein höherer oder alle. Der Bot setzt dafür die Berechtigungen anhand der Rang-Rollen.
- Über Einstellungen kann man das Personenlimit ändern, Leute rauswerfen oder den Besitz an jemand anderen abgeben. Leere Kanäle samt Anzeige verschwinden von selbst.
Der lernende Filter: Viele haben trotzdem einfach in den normalen Chat „suche Duo für Ranked" geschrieben. Der Bot erkennt solche Nachrichten über einen Ähnlichkeitsvergleich mit einer Liste bekannter Suchnachrichten und verweist freundlich auf die Spielersuche. Ist er sich unsicher, fragt er das Team: Mit ✅ oder ❌ landet die Nachricht auf der Positiv- oder Negativliste. So wurde der Filter mit der Zeit immer treffsicherer.
In Zahlen: Über die Spielersuche sind 5.819 Kanäle entstanden, davon 3.071 für Duos, 1.482 für Trios, 607 für Spezialmodi wie 1-gegen-1, 538 für Ranked und 121 für Arena.
Was er sonst noch kann
Rund um Apex:
- Apex-Account verknüpfen: Mit
/apex connect hat man seinen EA-, Xbox- oder PSN-Namen hinterlegt. Danach hielt der Bot die Rang-Rolle auf dem Server automatisch aktuell. 1.449 Leute haben ihren Account verknüpft.
- Apex-Infos: Statistiken als Grafik, aktuelle Map-Rotation, Shop-Angebote, Crafting-Rotation, Predator-Grenze und Serverstatus. Dazu Erinnerungen an die Legenden-Challenges und die Battle-Pass-Sterne, die es dafür gab.
- Shop-Erinnerung: Wer ein Item im Shop im Auge hatte, konnte es sich merken. Der Bot schrieb einem per Privatnachricht, bevor es wieder verschwand.
- Custom Games: Das Team konnte private Runden anlegen. Mitmachen durften nur Leute mit verknüpftem Account, und der Bot verteilte den Lobby-Code.
- „Guess the playercount“: Jeden Tag postete der Bot die Steam-Spielerzahlen von Apex, und die Community konnte vorher tippen, wie hoch sie ausfallen.
Für die Community:
- Eigene Sprachkanäle: Wer einen bestimmten Kanal betritt, bekommt automatisch einen eigenen Sprachkanal. Mit
/vc kann man Leute einladen oder rauswerfen, den Kanal umbenennen, verstecken oder die Personenzahl begrenzen. Leere Kanäle räumt der Bot wieder weg. So sind 3.650 weitere Kanäle entstanden.
- Benachrichtigungen: Sobald JoLas ein neues YouTube-Video hochlud oder auf Twitch live ging, hat der Bot das im Discord angekündigt. Auch jede neue Abo-Marke auf YouTube wurde gefeiert.
- Clips für Reaction-Videos: Die Community konnte ihre besten Apex-Momente als YouTube-Link einsenden, damit JoLas darauf in Reaction-Videos reagieren konnte. Der Bot prüft über die YouTube-API, ob das Video existiert, und lehnt doppelte Einsendungen ab. Danach landet der Clip mit Knöpfen zum Annehmen, Ablehnen oder als „gesehen“ Markieren in einer Warteschlange. Damit die nicht überläuft, schließt der Bot die Einsendungen bei 50 offenen Clips und öffnet sie erst wieder, wenn weniger als 25 übrig sind.
- Video-Vorschläge: Ideen für neue Videos, über die die Community mit 👍 und 👎 abstimmen konnte.
- Community-Streams: Wenn JoLas gestreamt hat, konnte man sich per Knopf für eine Auslosung eintragen. Wer gezogen wurde, durfte mit ihm zusammen spielen.
- Giveaways: Wer seinen Apex-Account verknüpft hatte, bekam die doppelte Gewinnchance.
- Supporter-Rollen: Twitch-Subs der höchsten Stufe und YouTube-Mitglieder der oberen Stufen bekamen automatisch eine VIP-Rolle.
- Kleinigkeiten: Mitgliederzähler, Geburtstage mit Altersrolle und
/tags für vorgefertigte Antworten auf häufige Fragen. Als OpenAI seine Bild-KI anbot, kam ein /generate-Befehl dazu, mit dem die Community zum Spaß Bilder erzeugen konnte – so lange, bis das kostenlose Kontingent aufgebraucht war.
Ordnung auf dem Server:
- Ticketsystem: Über ein Auswahlmenü eröffnet man ein privates Ticket, je nach Anliegen als Support-, Report-, Bot- oder Team-Ticket. Beschwerden über das Team sehen nur Admins. Wer im Support-Warteraum sitzt, wird dem Team gemeldet, und Gewinner eines Giveaways bekommen automatisch ein Ticket für ihren Preis. Beim Schließen speichert der Bot den ganzen Verlauf als HTML-Protokoll. Wer ein Ticket eröffnet und dann nicht mehr antwortet, bekommt nach 2 Stunden eine Erinnerung und nach 8 Stunden einen Timeout. Insgesamt sind 521 Tickets zusammengekommen.
- Moderation: Verwarnungen, ein Filter gegen Spam und Scam-Links und eine automatische Korrektur unlesbarer Nicknames. Zu junge Accounts fliegen beim Beitreten direkt raus, damit gesperrte Leute nicht einfach mit einem Zweitaccount zurückkommen.
- Hausregeln: Wer JoLas anpingt, bekommt einen Hinweis auf die Serverregel. Im Show-off-Kanal sind nur Bilder und Videos erlaubt, Werbung und Einladungslinks entfernt der Bot.
Technik
Der Bot läuft auf Node.js mit Discord.js 13. Er hat knapp 30 Slash-Befehle, rund 40 Event-Handler und insgesamt etwa 22.000 Zeilen JavaScript.
- MongoDB (über Mongoose) speichert Nutzer, verknüpfte Accounts, Giveaways, Tickets, Verwarnungen und Einsendungen, verteilt auf 20 Schemas. Redis dient als schneller Zwischenspeicher.
- Die Apex-Daten kommen von der API von apexlegendsstatus.com. Ein eigener Request-Limiter sorgt dafür, dass der Bot deren Limits einhält.
- Statistiken und Shop-Übersichten rendert der Bot mit Chart.js und sharp als Bilder.
- Ein kleiner Express-Server nimmt Webhooks entgegen, zum Beispiel für Shop- und Season-Daten.
- Ein eigenes Status-Panel im Discord zeigt, wie es dem Bot, der Spielersuche und den Datenbanken geht. Über Knöpfe lässt er sich dort auch neu laden oder neu starten.
- Gehostet ist das Ganze auf einem Hetzner-Cloud-Server.
Ein Nebenprodukt nutze ich selbst: Auf dem TeamSpeak von orangeferdi.at zeigt der Bot in den Kanalnamen die aktuelle Map und einen Countdown bis zum Season-Ende. So sehen wir beim Zocken direkt, was gerade läuft.
Was daraus wurde
2024 hat JoLas seinen Kanal beendet, und damit habe ich auch die Weiterentwicklung des Bots eingestellt.
Den Apex-Info-Teil habe ich später für die Twitch-Streamerin Paula Panther zu einem eigenständigen Bot ausgebaut.
Mehr zu meiner Zeit in der JoLas-Community steht auf der Startseite.