Hallöchen,
da ich mit in letzter Zeit sehr viel mit JavaScript beschäftige und mich selbst einfach fortbilden möchte, habe ich nun vor einigen Tagen begonnen einen Discordbot in NodeJS zu schreiben.
Vorher habe ich mich hauptsächlich mit der Webentwicklung auf NodeJS Basis beschäftigt, dies ist also ein erstes mal für mich.
[tabmenu]
[tab='Verwendete Packages']
[subtab='DiscordJS']
Dieses Package ist das Grundgerüst für den Bot. Es ist eine Library zur einfachen Kommunikation mit der DiscordAPI.
Ohne dieses Package würde der ganze Bot nicht funktionieren.
Zu finden unter: discord.js.org
[subtab='FS (Filesystem)']
Dieses Package wird für das auslesen und dem schreiben in der Userdatenbank verwendet.
Es ist bei NodeJS standartmäßig mit dabei.
[subtab=node-opus]
Dieses Package wird dafür verwendet Audio vom Bot zu übertragen.
Zu finden unter: node-opus - npm
[subtab=ytdl-core-discord]
Dieses Package wird dafür verwendet YouTube Videos abzuspielen.
Zu finden unter: ytdl-core-discord - npm
[subtab='Weitere']
Weitere Packages sind momentan nicht vorhanden. Ich möchte die Anzahl so niedrig wie möglich halten, da ich diesen Bot zum lernen verwenden möchte.
[/tabmenu]
[tabmenu]
[tab='Vorhandene Features']
[subtab='Konfiguration in separater Datei']
Die komplette Konfiguration des Bots wird in einer separaten Datei (config.js) gemacht.
Um den Bot also nutzen zu können, muss man die Hauptdatei des Bots garnicht anfassen.
[subtab='Commandhandler']
Es ist eine Art Commandhandler vorhanden, sodass neue Befehle einfach hinzugefügt werden können.
Die vorhandenen Befehle können im Bereich Befehle eingesehen werden.
[subtab='Rechtesystem']
Es ist bereits ein einfaches Rechtesystem mit insgesamt 3 Rängen vorhanden.
Diese 3 Ränge sind: User, Moderator, Administrator
Einige Befehle können als normaler User nicht ausgeführt werden, wie z.B. Kick und Ban.
[subtab='Userdatenbank']
Sobald ein Nutzer dem Discord auf dem der Bot läuft connectet, wird dieser in der Userdatenbank gespeichert.
Bisher wird nur die UserID, die Anzahl der Warns und das Beitrittsdatum gespeichert.
[subtab='Errorhandler']
Falls Fehler in der Konfiguration des Bots erkannt werden, werden diese automatisch in der Konsole ausgegeben.
[subtab='Automatische Join/Leave Nachrichten']
Sobald ein Nutzer den Discord betritt oder verlässt, versendet der Bot eine Infonachricht in den Infochannel.
[subtab=Anti Command Spam]
Damit Nutzer keine Befehle spammen, gibt es ein automatisches Anti Command Spam System, welches einen Befehl von einem User nur alle X Sekunden zulässt.
Die Wartezeit kann in der Config jederzeit angepasst werden.
[/tabmenu]
[tabmenu]
[tab='Befehle']
[subtab='help']
Der Help Befehl zeigt die Erklärung und benötigten Rechte für alle vorhandenen Befehle an.
Dieser Befehl kann von jedem ausgeführt werden.
[subtab='cleanup']
Der Cleanup Befehl löscht alle vorhandenen Nachrichten im Botchannel.
Dieser Befehl kann nur von Admins und Mods ausgeführt werden.
[subtab='poke']
Der Poke Befehl ist ein kleiner Funbefehl mit welchem man den Bot anstupsen kann.
Dieser Befehl kann von jedem ausgeführt werden.
[subtab='admins']
Der Admins Befehl ist ein Befehl welcher alle vorhandenen Administratoren und Moderatoren auf dem Discord anzeigt.
Dieser Befehl kann von jedem verwendet werden.
[subtab=developer]
Der Developer Befehl ist ein Befehl der die Kontaktmöglichkeit zum Entwickler zeigt.
Dieser Befehl kann von jedem verwendet werden.
[subtab=userinfo]
Der Userinfo Befehl zeigt Informationen über einen gewählten User an.
Dieser Befehl kann von jedem verwendet werden.
[subtab='warn']
Der Warn Befehl verwarnt einen Nutzer mit einem Grund.
Dieser Befehl kann nur von Admins und Mods verwendet werden.
[subtab='unwarn']
Der Unwarn Befehl entfernt einen Warn von einem Nutzer.
Dieser Befehl kann nur von Admins und Mods verwendet werden.
[subtab='feed']
Der Feed Befehl ist ein Funbefehl der überprüft ob ein User gerade feedet. (Yasuo spielt)
Dieser Befehl kann von jedem verwendet werden.
BILD FEHLT!
[subtab='kick']
Der Kick Befehl wirft einen Nutzer mit einem Grund vom Discord Server.
Dieser Befehl kann nur von Admins und Mods verwendet werden.
[subtab='ban']
Der Ban Befehl bannt einen Nutzer mit einem Grund vom Discord Server.
Dieser Befehl kann nur von Admins und Mods verwendet werden.
[subtab=meme]
Der Meme Befehl wählt ein zufälliges Meme aus dem Memeordner aus und postet es.
Dieser Befehl kann von jedem verwendet werden.
[subtab=setusername]
Der Setusername Befehl setzt den Benutzernamen von einem User.
Dieser Befehl kann nur von Admins und Mods verwendet werden.
[/tabmenu]
[tabmenu]
[tab=Changelog]
[subtab=v0.0.4]
- Befehle playyoutube und stopyoutube hinzugefügt
- Commandhandler (mal wieder) überarbeitet
- Standartdaten der Config wurden angepasst
[subtab=v0.0.3]
- Weitere Konfigurationsmöglichkeiten hinzugefügt
-- Join Nachrichten de/aktivieren, Leave Nachrichten de/aktivieren, Connect Nachricht de/aktivieren, Benutzername des Bots
- Befehl setusername hinzugefügt
- Load-Json-File Package entfernt (Sorgte für Komplikationen)
- Einige Anpassungen am Commandhandler
- node-opus Package hinzugefügt (Zum Abspielen von Audiostreams)
- ytdl-core-discord Package hinzugefügt (Zum Abspielen von YouTube Videos)
[subtab=v0.0.2]
- Commandhandler neu geschrieben (Befehle werden aus einer JSON Datei geladen)
- Befehle kick und ban neu geschrieben
- Befehl help dynamisch geschrieben
- Anti Command Spam hinzugefügt (Wartezeit kann in Config angepasst werden)
- Befehl meme hinzugefügt (Wählt ein zufälliges Meme aus und postet es)
[subtab=v0.0.1]
- Alle bisher vorhandenen Features eingefügt
Nach diesem Changelog werden richtige Changelogs folgen.
[/tabmenu]
Sourcecode ist zu finden auf GitHub
Für Feedback und Fragen bin ich jederzeit offen!