So erstellen Sie einen Discord-Bot mit Node.js

Blog

So erstellen Sie einen Discord-Bot mit Node.js

Heutzutage werden Bots verwendet, um verschiedene Aufgaben zu automatisieren. Seit der Veröffentlichung von Amazons Alexa-Geräten hat der Hype um Automatisierungs-Bots nur angefangen zu wachsen. Neben Alexa bieten andere Kommunikationstools wie Discord und Telegram APIs zur Entwicklung benutzerdefinierter Bots.



Dieser Artikel konzentriert sich ausschließlich auf die Erstellung Ihres ersten Bots mit der exponierten Discord-API. Der vielleicht bekannteste Discord-Bot ist der Music Bot. Mit dem Musik-Bot können Sie einen Songnamen eingeben und der Bot fügt Ihrem Kanal einen neuen Benutzer hinzu, der das angeforderte Lied spielt. Es ist ein häufig verwendeter Bot unter jüngeren Leuten auf Gaming- oder Streaming-Servern.

Beginnen wir mit der Erstellung eines benutzerdefinierten Discord-Bots.



Voraussetzungen

  • Node.js v10 oder höher installiert (Grundkenntnisse)
  • ein Discord-Konto und ein Discord-Client
  • Grundkenntnisse im Umgang mit einem Terminal

Schritt 1: Testserver einrichten

Zunächst benötigen wir einen Testserver, auf dem wir später unseren Discord-Bot testen können. Wir können einen neuen Server erstellen, indem wir auf das Plus-Symbol in der linken unteren Ecke klicken.

Klicken Sie auf Server erstellen



Es wird ein Popup angezeigt, in dem Sie gefragt werden, ob Sie einem Server beitreten oder einen neuen erstellen möchten. Natürlich wollen wir einen neuen Server erstellen.

Wählen Sie Server erstellen

Als nächstes müssen wir den Namen für unseren Server eingeben. Der Einfachheit halber habe ich den Server |_+_| genannt. Wenn Sie möchten, können Sie den Serverstandort je nach Standort ändern, um einen besseren Ping zu erhalten.

Servername

Reaktives, durchsuchbares Dropdown-Menü

Wenn alles gut gelaufen ist, sollten Sie Ihren neu erstellten Server sehen.

neuer Server

Schritt 2: Auth-Token generieren

Wenn wir unseren Bot per Code steuern möchten, müssen wir den Bot zuerst unter unserem Discord-Konto registrieren.

Um den Bot zu registrieren, gehen Sie zum Discord-Entwicklerportal und melden Sie sich mit Ihrem Konto an.

Nach der Anmeldung sollten Sie das Dashboard sehen können. Lassen Sie uns eine neue Anwendung erstellen, indem Sie auf klicken Neue Bewerbung Taste.

Entwickler-Dashboard

Als nächstes sehen Sie ein Popup, in dem Sie aufgefordert werden, einen Namen für Ihre Anwendung einzugeben. Nennen wir unseren Bot |_+_|. Durch Anklicken des Schaffen Schaltfläche erstellt Discord eine API-Anwendung.

Bewerbung erstellen

Wenn die Anwendung erstellt wurde, sehen Sie die Übersicht der neu erstellten |_+_| Anwendung. Sie sehen Informationen wie eine Client-ID und ein Client-Geheimnis. Dieses Geheimnis wird später als Autorisierungs-Token verwendet.

Übersicht Greeter Bot

Klicken Sie nun auf das Bot Menüpunkt im Einstellungen Speisekarte. Discord baut unsere |_+_| Anwendung und fügen Sie einen Bot-Benutzer hinzu.

Bot hinzufügen

Wenn der Bot erstellt wurde, erhalten Sie einen Überblick über Ihren benutzerdefinierten Bot. Schauen Sie sich die an Zeichen Sektion. Kopieren Sie dieses Autorisierungs-Token und notieren Sie es irgendwo, da wir es später benötigen, um eine Verbindung zu unserem Bot-Benutzer herzustellen.

Bot-Tab-Übersicht

Schritt 3: Berechtigungen definieren und Bot zum Server hinzufügen

Drittens wollen wir die Berechtigungen für den Bot definieren und ihn unserem Discord-Server hinzufügen.

Navigieren Sie zum OAuth2 Abschnitt unter dem Einstellungen Speisekarte. Hier können wir den Umfang für unseren Bot definieren. Da wir nur einen einfachen Bot aktivieren möchten, wählen wir den bot Möglichkeit.

Möglicherweise stellen Sie fest, dass sich die unten stehende Autorisierungs-URL jetzt geändert hat. Die |_+_| Abschnitt zeigt an, dass wir noch keine Berechtigungen festgelegt haben.

OAuth2-Bereich

Wenn wir weiter nach unten scrollen, finden Sie die Bot-Berechtigungen Sektion. Wir möchten, dass der Bot in der Lage ist, |_+_| und Nachrichtenverlauf lesen. Wir brauchen die Erlaubnis |_+_| damit wir die Anfragen der Benutzer erkennen können.

Wenn Sie beide Optionen auswählen, beachten Sie, dass sich die Nummer für den Berechtigungsparameter in der Autorisierungs-URL geändert hat.

Berechtigungen hinzufügen

Kopieren Sie abschließend diese URL und fügen Sie sie in Ihren bevorzugten Webbrowser ein. Sie finden eine Übersicht, die Sie fragt, zu welchem ​​Server Sie den Bot hinzufügen möchten. Wählen wir unser neu erstelltes |_+_| aus.

Drücke den Autorisieren Schaltfläche, um den Bot zu unserem Server hinzuzufügen.

Bot zum Server hinzufügen

Wenn Sie den Bot erfolgreich zu Ihrem Server hinzufügen können, sollten Sie den folgenden Erfolgsbildschirm sehen.

Wo kann man Terra-Münzen kaufen?

Erfolg Bot hinzufügen

Wenn Sie überprüfen möchten, ob Ihr Bot hinzugefügt wurde, gehen Sie zu Allgemeines Kanal. Sie sollten eine ähnliche Meldung sehen, die darauf hinweist, dass der Bot dem Kanal beigetreten ist.

Erfolg beim Hinzufügen des Bot-Kanals

Erfolg!

Schritt 4: Projekteinrichtung

Zum Schluss richten wir das Projekt ein. Das Basisprojekt finden Sie auf GitHub . Bitte klonen Sie das Repository lokal auf Ihrem Computer mit |_+_|.

Das Projekt hängt von zwei Abhängigkeiten ab, |_+_| und |_+_|. Die erste Abhängigkeit erlaubt uns die Verwendung eines |_+_| Datei, die das von uns aufgeschriebene Bot-Token enthält. Es ist offensichtlich, dass wir die zweite Abhängigkeit |_+_| für die Entwicklung des Discord-Bots benötigen.

Um beide Abhängigkeiten zu installieren, führen Sie bitte |_+_| . aus im Projektordner.

Um die Installation abzuschließen, erstellen Sie schließlich ein |_+_| Datei im Stammverzeichnis des Projekts. Fügen Sie eine Umgebungsvariable namens |_+_| . hinzu in die Datei wie folgt:

discord_playground

Schritt 5: Discord.js erkunden

Werfen wir einen Blick auf die |_+_| Datei im Stammverzeichnis des Projekts:

my-greeter-bot

Wir laden zuerst die Umgebungsvariablen, die wir definiert haben, indem wir die Konfiguration aus der Umgebung anfordern |_+_| Datei. Dadurch können wir die |_+_| Variable, die wir durch |_+_| definiert haben. Die letzte Zeile des obigen Snippets zeigt, wie wir das Token an die Login-Funktion übergeben, um Zugriff auf den von uns erstellten Bot zu erhalten.

Die |_+_| Variable ist eigentlich unser Discord-Client, über den wir interagieren.

Was ist der Name der Cash-App-Bank?

Hören Sie auf das fertige Ereignis

Als nächstes können wir nach Ereignissen lauschen. Zuerst hören wir ein |_+_| Veranstaltung. Das ready-Ereignis wird ausgelöst, sobald wir mit dem Bot verbunden sind:

my-greeter-bot

Wenn Sie das richtige |_+_| . verwendet haben Um sich beim Bot anzumelden, sollte Ihr Terminal den Namen Ihres Bots |_+_| ausgeben.

Sie können den Bot starten, indem Sie einfach |_+_| . ausführen in Ihrem Terminal. Stellen Sie sicher, dass Sie diesen Befehl im Stammverzeichnis Ihres Projekts ausführen.

Wenn der Bot erfolgreich verbunden ist, sollte der Name Ihres Bots im Terminal gedruckt werden.

Bot verbunden

Auf Nachricht hören Ereignis

neben dem bereit Event können Sie mit dem Discord-Client nach einem Botschaft Veranstaltung. Das bedeutet, dass der Bot jede Nachricht lesen kann, die an einen Kanal gesendet wird. Um zum Abschnitt Berechtigungen zurückzukehren, ist dies der genaue Grund, warum wir dem Bot die Berechtigung erteilen müssen, den Nachrichtenverlauf zu lesen.

my-greeter-bot

Wenn wir den Code etwas genauer untersuchen, sehen Sie, dass wir nach einer Nachricht mit dem Inhalt |_+_| suchen. Wenn wir eine Nachricht erhalten, die nur |_+_| enthält, antwortet der Bot mit |_+_|. Danach verwenden wir |_+_| erneut senden |_+_| zum Kanal.

Beachten Sie den Unterschied zwischen beiden Befehlen:

  • |_+_|: markiert den ersten Benutzer, der die Nachricht gesendet hat
  • |_+_|: sendet eine Nachricht an den Kanal, ohne jemanden zu markieren.

Versuchen Sie, den Bot mit |_+_| . auszuführen und sende eine Nachricht |_+_| zum |_+_| Kanal. Überprüfen Sie, ob Sie das gleiche Ergebnis sehen.

Ping-Nachricht

Suchen Sie nach markierten Benutzern

Um einen neuen Befehl hinzuzufügen, müssen wir die |_+_| Klausel haben wir mit einem |_+_|:

permissions=0

Nehmen wir an, wir möchten jemanden treten, indem wir eine Nachricht wie |_+_| senden. Also suchen wir zuerst nach |_+_| im Inhalt der Nachricht. Wenn wir eine Nachricht finden, die mit |_+_| beginnt, können wir überprüfen, ob Benutzer in der Nachricht mit dem |_+_| . markiert wurden Eigentum.

Wenn Benutzer markiert sind, können wir den erstgenannten Benutzer mit |_+_| auswählen. Als Nächstes antworten wir dem Kanal mit dem Benutzernamen des Benutzers in der Nachricht.

Interview mit IBM Data Scientist

Kick-Benutzer

Schritt 6: Das Problem mit dem |_+_| Kette

Als nächstes besprechen wir das Problem mit all diesen |_+_| Aussagen. Wenn Sie nur wenige Befehle definiert haben, auf die im Nachrichtenereignis gewartet werden soll, ist der Code gut lesbar.

Wenn wir uns jedoch dazu entschließen, ein umfangreiches Projekt auf diese Weise aufzubauen, haben wir am Ende eine Kette von |_+_| Aussagen. Hier ist eine kleine Liste von Gründen, warum Sie |_+_| . nicht verwenden sollten Ketten für alles, was kein kleines Projekt ist:

  • Es ist einfacher, dem Spaghetti-Code zum Opfer zu fallen
  • der Code ist schwer zu lesen
  • es ist nicht einfach zu debuggen
  • es ist schwierig Code zu organisieren
  • Es ist nicht einfach zu warten, wenn der Code wächst.

Schauen wir uns daher das Befehlsmuster an, das wir verwenden können.

Implementieren eines Befehlshandlers

Ein Befehlshandler ist ein Ansatz, der von |_+_| . unterstützt wird Paket. Bevor wir fortfahren, schauen Sie sich die |_+_| . an mit |_+_| verzweigen. Dieser Zweig enthält die Implementierung des Befehlshandlers.

Befehlsordner

Sehen wir uns zunächst den Befehlsordner an. Dieser Ordner enthält ein |_+_| Datei, die alle Befehle exportiert, die wir definieren. Der Einfachheit halber definieren wir nur einen Befehl, |_+_|:

Send Messages

Schauen wir uns als Nächstes die Implementierung von |_+_| . an Befehl, der im Grunde ein Objekt exportiert, das Folgendes enthält:

  • |_+_|: ein Befehlsname.
  • |_+_|: Es empfiehlt sich, für jeden Befehl eine Beschreibung hinzuzufügen.
  • |_+_|: eine Funktion, die |_+_| . akzeptiert und |_+_| Eingänge. Diese Funktion hat dieselbe Logik wie in unserem |_+_| Kette.
Read Message History

Befehle importieren

Im weiteren Verlauf importieren wir die Befehle in das |_+_| Datei. Beachten Sie, dass wir eine Befehlssammlung auf dem Discord-Bot definieren. Wir durchlaufen alle Befehle und fügen sie nacheinander der Befehlssammlung hinzu.

Die |_+_| Die Funktion akzeptiert den Namen des Befehls und das gesamte Befehlsobjekt:

discord_playground

Danach müssen wir unser |_+_| . entfernen Chain und ersetzen Sie es durch dynamischen Code, um den richtigen Befehl zu finden, den wir aufrufen möchten:

git clone https://github.com/michielmulders/discord-bot-sitepoint.git

Wir versuchen zunächst, den Inhalt der Nachricht mit |_+_| durch Leerzeichen aufzuteilen. Wir nehmen das erste Element in diesem |_+_| Array ist unser Befehl. Um zu überprüfen, ob der Befehl in unserer Sammlung vorhanden ist, stellt die Sammlung ein |_+_| Funktion, die einfach true oder false zurückgibt. Wenn der Befehl nicht existiert, geben wir eine leere Antwort zurück.

Wenn der Befehl jedoch existiert, verwenden wir die |_+_| Funktion, um den richtigen Befehl abzurufen und mit den Eingabeparametern |_+_| . auszuführen und |_+_|.

Es ist eine leicht lesbare, dynamische Art, Befehle aufzurufen, ohne Spaghetti-Code zu schreiben. Auf diese Weise können Sie Ihr Projekt bei Bedarf auf viele Hundert Befehle skalieren.

Auch hier: Wenn Sie die neue Version unseres Codes testen möchten, sollten Sie sich die |_+_| . ansehen mit |_+_| verzweigen. Als nächstes installieren Sie alle Abhängigkeiten mit |_+_| und starte den Bot mit |_+_|.

Einpacken

Die Installation und Einrichtung eines neuen Discord-Bots kann sich zunächst überwältigend anfühlen. Die von |_+_| . angebotene API Paket ist unkompliziert und die Discord-Website bietet tolle Beispiele .

Da dieses Tutorial nur zwei Berechtigungen behandelt, gibt es noch viel mehr zu finden. Weitere Informationen zu Berechtigungen finden Sie auf der Discordjs.guide Webseite.

Viel Glück beim Bau deines ersten Discord-Bots!

#node-js #nodejs #node #chat-bot