[DEV-BLOG] Selfmade Discordbot

  • 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!

  • Das du dich mit JavaScript beschäftigst hut ab. Dein Bot schaue ich mir mal an wenn er fertig ist.


    Wenn du damit fertig bist dann buche ich dich als JavaScript Entwickler xDDD

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Das du dich mit JavaScript beschäftigst hut ab. Dein Bot schaue ich mir mal an wenn er fertig ist.

    Danke dir. Wird wahrscheinlich noch einige Zeit dauern, bis er wirklich fertig ist. Das Grundgerüst ist aber schon fertig, also muss darauf nurnoch aufgebaut werden. ^^


    Wenn du damit fertig bist dann buche ich dich als JavaScript Entwickler xDDD

    Alles unter 300€ Netto Stundenlohn lehn ich ab ;) :D

  • Veröffentlichst du die Soße / gibts schon n GitHub Repo o.Ä.?

    GitHub Repo ist bereits vorhanden, aber noch auf privat gestellt, damit mir der Bot Token nicht geklaut wird.
    Sobald es für den richtigen Betrieb bereit ist, wird die Repo auf Öffentlich gestellt.

  • Beitrag von Peek ()

    Dieser Beitrag wurde von Eddy aus folgendem Grund gelöscht: Informieren bevor man was schreibt ().
  • Beitrag von LeonMrBonnie ()

    Dieser Beitrag wurde von Eddy aus folgendem Grund gelöscht: Bezug entfernt ().
  • Musst ja die Datei nicht mit ins Repo packen

    Der Bot Token wird in der config festgelegt.
    Das ist aber auch nicht der Hauptgrund, zum jetzigen Zeitpunkt wird es noch einige große Änderungen an der Dateistruktur geben, weswegen ich das Repo erstmal nicht öffentlich machen möchte.


    v0.0.3 wurde soeben fertiggestellt und gepusht.


    Der Sourcecode ist nun öffentlich.
    Aufgrunddessen, dass ich mich nun einem Projekt widme, welches mir mehr Spaß macht als dieses, möchte ich euch die Möglichkeit geben den Code selber anzugucken und den Bot zu eurem belieben anzupassen.
    Issues oder Pull Requests können gerne getätigt werden, ich werde aber wahrscheinlich in nächster Zeit nichtsmehr am Bot machen.
    Zu finden auf GitHub

  • Beitrag von ShikiFuujin ()

    Dieser Beitrag wurde von Eddy gelöscht ().