Schlagwort: Bot

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.

p4web: Der Discord Bot steht zum Testen bereit!

p4web: Der Discord Bot steht zum Testen bereit!

Ich habe lange nach einem Discord Bot gesucht, der es ermöglicht alle Twitch Streams eines Spiels auf einem Discord anzukündigen.
Gesucht habe ich das für meine Communityarbeit bei The Cycle. Jedoch gab es keinen Bot, der meine Erwartungen komplett erfüllte.
Entweder musste man jeden Streamer manuell einfügen oder war die Anzahl der Ausgaben extrem eingeschränkt.

Also habe ich mich an die Arbeit gemacht meinen eigenen Bot zu schreiben.

Nach nur mehreren Tagen des ausgiebigen Tüftelns hat der Bot einen Stand erreicht, der mich so zufrieden stellt, dass ich ihn der Öffentlichkeit vorstellen möchte.

Was kann der Bot?

Momentan kann er Streams von The Cycle in einem einstellbaren Channel ausgeben.
Support für weitere Spiele ist vorgesehen, jedoch sind noch keine weiteren Spiele integriert.

Geht ein Stream offline oder ändert das Spiel, wird die Ankündigung auf dem Discord wieder gelöscht. Man hat also immer nur aktive Streams in den Ankündigungen.
Derzeit prüft der Bot in einem Intervall von 1 Minute. Das muss eventuell noch erhöht werden. Ich kann noch keine Aussage über die Performance machen, wenn der Bot letztlich mehrere Server füttern muss.

An wen richtet sich der Bot?

Der Bot richtet sich vor allem an Communities, die sich auf ein bestimmtes Spiel konzentrieren. Der Bot kann nur jeweils ein Spiel pro Server überwachen.
Ebenso könnte er für kleine, bis mittlere Spieleentwickler interessant sein, die Content Creators zu ihrem eigenen Spiel auf ihrem Discord promoten möchten.

Was kann ich zukünftig erwarten?

  • weitere, unterstützte Spiele
  • ein Feld, in dem Mitglieder einer definierbaren Content Creator Rolle individuelle Texte für die Ankündigung schreiben können (Umsetzbarkeit prüfe ich derzeit)
  • Filter, der es ermöglicht nur Streams in bestimmten Sprachen anzukündigen

Einrichtung

Nach dem Einladen auf den Server lassen sich von jedem über den Befehl !ab -info Informationen zum Bot abrufen.
Über den Befehl !ab -config bekommen Administratoren weitere Informationen zur Konfiguration.

Leider musste ich den Test erstmal bis auf Weiteres aussetzen, da sich einige hartnäckige Bugs ergeben haben.

Bitte beachtet aber, dass sich der Bot noch in der frühen Entwicklung befindet. Fehler und fehlende Funktionen sind daher nicht ausgeschlossen.
Solltet ihr einen Fehler finden, würde ich mich freuen, wenn ihr mir diesen über das Kontaktformular meldet.

Auch ist der Botname noch nicht final. Dieser wird sich mit Sicherheit ändern, wenn Interesse an dem Bot besteht und weitere Spiele integriert sind.

Archive

Diese Seite benutzt Cookies, um die Nutzerfreundlichkeit zu verbessern. Mit der weiteren Verwendung stimmst du dem zu. Datenschutzerklärung