Discord. Botting kann auch positiv sein.
Ein Anfänger-Guide zur Implementierung eines Discord-Bots auf eurem Server (mit Node.js).
Falls ihr nun schon bewandert sein solltet, was das Thema Discord und die möglichen Funktionen angeht, überspringt doch ruhig den ersten Part, bis hin zur Erstellung und Implementierung des Bots!
“Ich bin schon mal in der Disse.” — Julius D. (E2E Testing professional)
“Mittagstisch im Discord vor der Vorlesung?” — Johannes K. (Machine Learning & Tensorflow enthusiast)
“Komm Disco, du Flachpfeife!” — Luis W. (riesen Django Fan, auch vom CMS)
Ich denke nicht nur in der (dafür vorgesehenen) Gamerszene gibt es kaum eine mehr genutzte Kommunikationsmethode, als die Discord-App von Discord Inc.
Diese App kann vieles und das kostenlos.
Sie besitzt eine sehr einfache Benutzeroberfläche (UI), sodass sich dort auch Laien nach seiner Anmeldung sehr schnell einfinden und wohlfühlen können, ohne viel Zeit mit einem Haufen Einstellungen etc. zu verschwenden.
Die, von einer Internetverbindung abhängige, App kann sowohl live genutzt werden mit den Funktionen eines Voicechats und eines Livestreams, als auch auf viele andere Arten.
Da man in der App sehr simpel, mit einem Tastenklick, einen eigenen Server erstellen kann, ist es ein Leichtes, selbst zu bestimmen, was darauf für die Nutzer möglich bzw. einsehbar ist.
Oftmals trifft man auf einem neuen Server auf einen Willkommensbereich, auf welchem der neue Nutzer eine Einweisung in den Server, oder ein Regelwerk für den Aufenthalt auf diesem erlangt, welches man z.B. mit einem Klick auf ein Emote “unterzeichnen” muss.
Ein Bot entscheidet anhand der Antwort, ob der Nutzer das Recht erlangt, sich auf dem Server bewegen zu können.
Als eine weitere, gängige Nutzung findet sich auf nahezu allen Servern ein Chatbereich, um mit den anderen Servernutzern sowohl schriftlich, als auch bildlich Informationen auszutauschen und gemeinsam, als eine Art Gemeinschaft, eine spaßige Zeit zu verbringen.
Sobald sich User auf den Servern fehlerhaft verhalten, durch Kraftausdrücke im Chat oder man seine Rechte fälschlich dazu verwendet andere Nutzer durch die Channel zu schieben, greift meist ein weiterer Bot ein, um z.B. mit einem Timeout, den Nutzer auf die stille Treppe zu schicken oder der Person die Rechte ganz zu entziehen.
Diese Bots haben mittlerweile sehr viele Funktionen und können mit ein wenig Javascript auch selbst geschrieben und verändert werden.
Falls ihr nur hier seid, um an ein paar Bots zu kommen und die einfache Suche danach bei Google zu schwer war, habe ich unter folgendem Link eine ganze Reihe kostenlose und einfach zu installierende Bots zur Auswahl:
Nun seid ihr aber sowohl interessiert, als auch engagiert, wollt euren eigenen Bot schreiben und implementieren, womit wir im nächsten Absatz beginnen wollen.
Kommen wir nun zu unserem eigenen Bot
Zu Beginn müsst ihr wissen, dass wir die Rechte auf einem Server benötigen, um einen Bot zu implementieren, weswegen ich für diesen kurzen Guide empfehle, sich schnell (wie bereits oben beschrieben) einen eigenen Server anzulegen.
Jetzt benötigen wir noch ein aktuelles Node.js, welches einfach über die Node.js Website geladen und installiert werden kann.
Und los geht die wilde Fahrt und zwar im Terminal:
Wir erstellen zuallererst einen neuen Ordner mit unserem Wunschtitel (in meinem Fall “discordjs-mein-bot”):
mkdir discordjs-mein-bot
Diesen Ordner wollen wir mit unserem Wunschprogramm zum Coden (in meinem Fall VS Code) öffnen und mit dem folgendem Terminalbefehl
npm init -y
eine neue package.json Datei, mit allen dazugehörigen Scripts, erstellen.
Um einen ordentlichen Discord-Bot zu schreiben, benötigen wir die discord.js Libary, welche objektorientiert arbeitet und sich simpel mit folgendem Befehl in unserem Projektverzeichnis installieren lässt:
npm install discord.js
Des Weiteren werden wir noch die “dotenv dependency” installieren, da wir mit Umgebungsvariablen arbeiten wollen, welche unser Bot-Token sichern wird.
npm install dotenv
Folgend wollen wir einen neuen Ordner namens “src” in unserem Arbeitsverzeichnis erstellen. In diesem Ordner werden wir eine Datei mit dem Namen “bot.js” erstellen, welche wir für den Code des Bots benutzen.
Zusätzlich wollen wir in das Arbeitsverzeichnis, außerhalb des “src” Ordners eine Datei namens “.env” erstellen, mit welcher wir gleich unser Bot-Token speichern wollen.
Jetzt sollte das Verzeichnis wie folgt aussehen und wir können bereits eine neue Variable mit einem frei wählbaren Namen (in meinem Fall DISCORDJS_BOT_TOKEN) in die “.env” Datei tippen, da wir diese gleich mit unserem Bot-Token definieren wollen.
Wichtig hierbei ist es, dass der Name der Variable nicht bereits verwendet wird.
Nun brauchen wir unser Bot-Token, eine Art Zahlenschlüssel, welches gebraucht wird, um unseren Bot benutzen und bearbeiten zu können.
Es ist äußerst wichtig, dass das Bot-Token auf keinen Fall öffentlich gemacht wird, da sonst andere Personen auf den Bot zugreifen und Schandtaten anrichten können. Behaltet also das Bot-Token für euch!
Im folgenden Gif zeige ich ganz einfach, wie man auf der Seite
www.discord.com/developers/applications zuerst eine neue Applikation hinzufügt, dann einen Bot in dieser Applikation aktiviert, zu guter Letzt sein Bot-Token finden und dieses kopieren kann, alles in unter 16 Sekunden:
Dieses Bot-Token fügen wir nun in unsere “.env” Datei zu unserer bereits DISCORDJS_BOT_TOKEN benannten Variable hinzu und haben damit unseren Bot mit unserem Verzeichnis verbunden, was uns nun einfach damit arbeiten lässt, sobald wir die Variable noch in unserer “bot.js” Datei anwählen:
Nun kann unser Bot zwar geschrieben werden, um seine Fähigkeiten jedoch zu testen und ihn zu nutzen, wollen wir ihn auf unserem Server implementieren.
Dazu benötigen wir die Client ID, welche wir auch wieder unter www.discord.com/developers/applications einsehen und kopieren können.
Um unseren Bot dem Server hinzuzufügen, müssen wir die Client-ID hinter folgenden Link einfügen und dem gewünschten Server hinzufügen:
www.discord.com/api/oauth2/autorize?client_id=HIER CLIENT ID EINFÜGEN&scope=bot
Yeah, bis hierhin haben wir es schonmal geschafft und unser verlinkter Bot existiert auf unseren Servern! Lasst uns im nächsten Schritt darum kümmern, dass der Bot auch online geht.
Nun ist der Bot zwar auf dem Server, aber noch nicht online, worum wir uns als Nächstes kümmern werden.
Für die weiteren Schritte und natürlich euren eigenen Code, benötigen wir die Discord Documentation (Discord.js/org), auf welche ihr euch immer beziehen könnt und in der ihr auch einen weiteren Guide zum Aufsetzen eines Bot’s findet.
Um nun mit der Discord API kommunizieren zu können, müssen wir die Klasse “Client” zu einem Objekt umfunktionieren, da (wie oben im Text erwähnt) die Discord Libary objektorientiert arbeitet.
Zusätzlich fügen wir den Befehl hinzu, welcher unseren Bot online gehen lässt:
Nun geben wir im Terminal noch unseren Startbefehl für die Node-Anwendung ein und sehen dann auch schon unseren Bot online kommen:
node ./src/bot.js
Herzlichen Glückwunsch, euer Bot läuft und jetzt könnt ihr ohne meine Hilfe weitermachen.
Ich habe da noch einige Anregungen für euer weiteres Vorgehen:
- nutzt “nodemon” im weiteren Verlauf, um durch automatische Speicherung und Aktualisierungen eures Codes und Terminals Zeit zu sparen
- schaut euch Bot-Ideen an, die euch interessieren und implementiert diese in euren eigenen Code
- nutzt die vielen Discord-Server von Bot-Entwicklern um euch auszutauschen
- versucht folgenden Code (euer Bot Name muss im client.login angepasst werden) und gebt im Discord “hello” ein:
require(‘dotenv’).config();
/** Documentation Discord.js.org */
const { Client } = require(‘discord.js’);
const client = new Client();
const PREFIX = “$”;/**Console message when a user logged in */
client.on(‘ready’, () => {
console.log(`${client.user.username} has logged in.`)
});/**Bot commands for texts on server for texted spaces and a shorter log*/
client.on(‘message’, (message) => {
if (message.author.bot) return;
if (message.content.startsWith(PREFIX)) {
const [CMD_NAME, …args] = message.content
.trim()
.substring(PREFIX.length)
.split(/\s+/);console.log(CMD_NAME);
console.log(args);
}/**Bot answer for hard coded “hello” by a user. Does not ignore bot messages by itself, so there would be a loop*/
console.log(`[${message.author.tag}]: ${message.content}`);
if (message.content === ‘hello’) {
message.channel.send(‘hey, you are a developer, so act like it! Say: “Hello World”’);
}console.log(`[${message.author.tag}]: ${message.content}`);
if (message.content === ‘Hello World’) {
message.channel.send(‘Here we go ;) nice to meet you, developer’);
}
});client.login(process.env.DISCORDJS_BOT_TOKEN);
Viel Erfolg und Spaß beim Coden! — Max