Schlagwort: Bot

Discord: Der Umgang mit Bot Entwicklern

Discord: Der Umgang mit Bot Entwicklern

Hallo zusmamen,

nach nun wirklich einer Ewigkeit ohne neue Beiträge auf meinem Blog, bin ich mal wieder motiviert etwas zu verfassen.

Im folgenden wird es sich um eine Kritik an der Art und Weise der Verifizierung oder besser der Freischaltung von Bots für den erweiterten API Zugriff seitens Discord handeln.

Als Grundlage dient hier meine eigen Erfahrung und Ärger, den mir dieses Verfahren bereits bereitet hat.

Zum Hintergrund
Ich habe auf Basis von Erfahrungen aus meiner freiwilligen Arbeit als Discordmoderator bei The Cycle: Frontier, einen Bot entwickelt, der die Discordseitige Suche nach Gruppen für Spiele, grundlegend vereinfacht.
Viele kompetitive Spiele haben große Discords mit vielen Sprachkanälen, nun ist es für viele User aufgrund von Unkenntnis der Discord funktionsweise sehr schwer ihren Sprachkanal in einer Gruppensuche Nachricht zu verlinken, um schnell gefunden werden zu können.
Für genau diesen Zweck habe ich den Bot entwickelt, der den Vorgang automatisiert.

Der Bot wurde aufgrund seiner einfachheit auch sehr schnell in durchaus große Communities aufgenommen und wird dort aktiv genutzt.
Dies hatte nun aber auch zur Folge, dass er sehr schnell die Obergrenze von 100 Servern erreicht hatte. Mehr Server sind erst nach Freischaltung für die erweiterte API möglich.
Ich habe also den Antrag der Verifizierung, bei dem man seine Identität mittels Ausweiseinsendung offen legen muss, eingereicht. Dieser wurde auch überraschend schnell bearbeitet und der Bot wurde verifiziert, ohne aber Zugang zur erweiterten API zu bekommen.

Ich stellte also den Antrag erneut und bekam folgende Antwort:

„Unfortunately, I am denying your Guild Members and Message Content Privileged Intent request. This is because we are only providing access to our privileged gateway intents to power unique, compelling, user-facing functionality, and we do not believe your use-case meet this criteria.“

Ein Bot, der in rekordzeit das Limit erreicht hat, auf wirklich großen Servern eingesetzt wird hat also keine einzigartigen und nutzerfreundlichen Funktionen … aha … interessant.

Ich hatte den Bot absichtlich einfach und ressourcenschonend gestaltet, da er eben nur den Zweck der Gruppensuche enorm vereinfachen sollte.
Für mich zählte Stabilität mehr als Featurereichtum.

Aber OK, ich erweiteret den Bot zusätzlich um eine logging Funktion und ein paar nutzerfreundlichen Anpassungsmöglichkeiten in der Optik der Ausgabe. Also alles Dinge, die meines Erachtens die Nutzerorientierung un -freundlichkeit steigern, ohne aber die Stabilität massiv zu beeinträchtigen.

Also Antrag erneut ausgefull, nur um ein paar Minuten später die exakt gleiche Antwort erneut im Postfach zu finden.
Da fühlt man sich als Entwickler nun wirklich etwas verarscht… klar verstehe ich, dass sie nicht jeden 0815 Bot annehmen können, aber einen Bot prüfen kann man nicht in ein paar Minuten. Ich wette diese Prüfung ist nie erfolgt. Man schaut hier nicht auf die Qualität eines Bots, sondern rein auf die Anzahl an Funktionen.

Da muss man sich nicht wundern, dass sehr viele Bots derzeit einfach nur instabil laufen und ständig Ausfälle haben, da sie mit sinnlosen Features zugemüllt werden (müssen), um den erweiterten Zugang zu bekommen.

Ich habe nun die Funktionen erneut etwas erweitert und werde demnächst einen nächstn und vermutlich letzten Versuch starten den Zugang zu bekommen. Andernfalls kann mich Discord wirklich kreuzweise.
Mit diesem Verfahren macht das Entwickeln einfach keinen Spaß mehr. Bots sind das, was diese Plattform einzigartig macht und vermutlich auch am Leben hält, aber als Entwickler bekommt man nur dicke Steine in den Weg gelegt.

D.JS: Herausfiltern von Discord Invites & Informationen des Zielservers

D.JS: Herausfiltern von Discord Invites & Informationen des Zielservers

Die neuste Erweiterung meines The Cycle Discord Bots sollte ein Filter sein, der Discord Einladungen automatisch löscht bzw. mit einer Whitelist abgleicht, ob ein Link zugelassen ist..

Die Idee war recht simpel, doch in der Umsetzung stand ich auf einmal vor dem Problem einen Discord Link überhaupt zu identifizieren, auch wenn er in einen Text verpackt ist.
Als wäre das nicht schon Aufgabe genug, gibt es ja zig Variationen diese Links. Zusätzlich wollte ich ja dann auch nicht nur den Link selbst auf eine Whitelist setzen, sondern bestenfalls den Zielserver, sodass letztlich alle generierten Links zu einem solchen Server zugelassen sind.

Meine Suche verlief jedoch zunächst nicht sehr erfolgreich. Viele gefundene Ansätze passte nicht wirklich in mein Konzept. Im letzten Schritt kontaktierte ich dann auf dem offiziellen Discord von D.JS die Community und hatte innerhalb von 2 Minuten doch tatsächlich einen brauchbaren Ansatz, der letztlich auch eine Lösung lieferte.

Um vielleicht Anderen, die vor dem gleichen Problem stehen, die Suche zu vereinfachen, hier ein Auszug, wie ich das gelöst habe.

Zur Identifikation des Links in einer Nachricht verwendet man RegEx (Regular Expression) das genaue Suchmuster für Discord Links wurde mir glücklicher Weise direkt von einem Communitymitglied mit geliefert.

Letztlich sieht dann die Suche wie folgt aus:

let DiscordInvite = /(https:\/\/)?(www\.)?(discord\.gg|discord\.me|discordapp\.com\/invite|discord\.com\/invite)\/([a-z0-9-.]+)?/i;
DiscordInvite = DiscordInvite.exec(message.content);

Dies gibt in dann in DiscordInviteein Array mit diversen Informationen zum gefundenen Link aus. Der Link selbst befindet sich dabei auf Position 0.

discordInvite = discordInvite[0];

Der Erste Teil meines Ziels war somit Erreicht. Möchte man übrigens nur feststellen, ob ein Link vorhanden ist, kann man auch einfach nur

DiscordInvite = DiscordInvite.test(message.content);

nutzen. Hier bekommt man dann ein true bzw. false.

Die letztlichen Informationen über den Zielserver kann man dann über

client.fetchInvite(discordInvite).then(invite => { }

abrufen. invite.guild.id liefert dann zum Beispiel die ID des Zielservers, invite.guild.name den Namen, und so weiter.

Ich hoffe ich konnte mit diesem kurzen Abriss dem Einen oder Anderen helfen. In diesem Sinne viel Spaß mit eurem Discord Bot.

Archive

Kategorien