Schlagwort: Discord

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.

Discord: Vorsicht beim Einrichten

Discord: Vorsicht beim Einrichten

Vor Kurzem ist mir aufgefallen, dass bei einem Discord Server, den ich moderiere, die Email Verifizierung nicht funktionierte.

Das Verifizierungslevel ist auf medium gesetzt, dennoch konnten Nutzer direkt nach Erstellen eines Accounts, ohne Abwarten der 10 Minuten und ohne Verifikation der Email Adresse den Server betreten, schreiben und die Voice Channels nutzen.

Nach einigem Suchen habe ich dann den Fehler gefunden. Auf dem Server läuft ein Bot, der jedem neuen Nutzer direkt eine Rolle automatisch zuweist.
Nun scheint es aber so, dass sich das Verifizierungslevel von Discord selbst nur auf die @everyone Rolle, also auf Nutzer komplett ohne zusätzliche Rolle, bezieht.

Weist ihr einem Nutzer nun manuell oder über einen Bot eine Rolle zu, wertet Discord diesen User als „von euch verifiziert“ und ignoriert damit die eigene Sicherheitsrichtlinie.

Wer das nicht weiß, der bastelt sich sehr schnell ein Schlupfloch für Spammer und Trolls.

Daher rate ich von einem automatischen Zuweisen von Rollen für neue Nutzer ausdrücklich ab. Allgemein sehe ich das aber als einen Fehler im Discord Rechtesystem an, die irgendwann hoffentlich nachgebessert wird.

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.

WordPress: Discord Embed und der Autorenname

WordPress: Discord Embed und der Autorenname

Discord bzw. WordPress hat mich gestern mal wieder fast zur Verzweiflung gebracht.

Schickt man einen Link zu einer WordPress Seite über Discord, werden ein Teil der Informationen der Seite als „Embed“ in Discord angezeigt.
Eine wunderbare Funktion, wie ich finde.

Allerdings musste ich feststellen, dass bei der Verlinkung von fixen Seiten immer wieder der Name des Autors auftauchte, obwohl er auf der Seite selbst komplett ausgeblendet ist.

So sollte die Darstellung nicht aussehen.

Bei Blogeinträgen ist das ja verständlich und auch nachvollziehbar, aber bei festen Unterseiten des Blogs möchte ich das nicht.

Doch weder im Code, noch in Funktionen war diese Einblendung vorhanden. Zumindest habe ich nichts gefunden.

Dabei wollte ich nur, dass Verlinkungen zu diesen Seiten so aussehen:

Lange Rede, kurzer Sinn, ich habe mir fast die Finger wund gesucht. Ständig wurden Eingriffe in den Code beschrieben, die allerdings nach jedem update wieder neu erfolgen müssten.

Nachdem ich mich gefühlt durch 100 Weiterverlinkungen durch diverse Foren geklickt hatte, wurde ich dann aber doch noch fündig.

Es war im Grunde so einfach. Es wurde dort gesagt, ich solle einfach nur das Plugin „Disable Embeds“ installieren. – So einfach sollte das sein? – Naja mal ausprobieren und siehe da

So möchte ich es haben.

Ein Traum! Der einzige Nachteil ist, dass die Embeds auch für die eigene Seite deaktiviert sind.
Es wird also keine kleine Vorschau von Links mehr in den Artikel geladen, wenn man Links einbindet.

Ich hoffe ich konnte hiermit dem Ein oder Anderen die Sucherei ersparen. 

Archive

Kategorien