NodeJS Breadfish Discord Bot

  • Moin,

    nachdem vor kurzer Zeit der offizielle Breadfish Discord Bot seinen Geist aufgegeben hat, und maddin diesen nichtmehr reparieren kann, hat root den Bot in C# neu geschrieben, da ich ihm aber meine krassen Programmierskillz beweisen muss, schreibe ich nun den Discord Bot neu. Dann muss er sich auch nicht um den Bot kümmern.



    Informationen über den Bot:

    Der Bot ist vollständig in NodeJS geschrieben und verwendet die folgenden Packages:

    axios (GitHub) - Für die Abfrage der Donatorliste

    discord.js (Website) - Für die Kommunikation mit der Discord API

    require-dir (NPM) - Um alle Befehle rekursiv zu laden

    select-random-file (NPM) - Um ein random Bild für den !bpm Befehl auszuwählen

    adm-zip (NPM) - Um den BPM Cache zu aktualisieren (Um genau zu sein um die GitHub Zip Datei zu entpacken)


    Der Bot wurde komplett von mir von Grundauf gecodet, dieser Bot hat nichts mit meinem verworfenen Discord Bot zu tun. ([DEV-BLOG] Selfmade Discordbot)

    Da dieser Bot eine Kopie des alten Discord Bots ist, wird dieser auch zu Anfang nur die gleichen Features wie der alte Discord Bot haben. Vorschläge für neue Features können gerne als neues Issue beim vorhandenen GitLab Repository gestellt werden. (Weitere Informationen dazu sind weiter unten zu finden)



    Features:

    Commandhandler

    Der Bot hat einen von mir selbst geschriebenen Commandhandler der das erstellen von neuen Befehlen kinderleicht macht. Dieser arbeitet mit einer Klasse für Befehle.

    Befehle können einfach mit dem Aufruf einer einzelnen Funktion erstellt werden, und nach Angabe des Namen des Befehls, der Beschreibung, des benötigten Rechtelevels und der Funktion die ausgeführt werden soll wenn der Befehl ausgeführt wird, ist der Befehl auch schon fertig nutzbar und in der !help Liste automatisch zu finden.


    Logger

    Es ist ein kleines Loggingsystem implementiert, womit Informationen, Warnungen und Fehler in die Konsole ausgegeben werden aber auch in einer .log Datei im logs/ Verzeichnis mit Timestamp gespeichert werden können.


    Donator Synchronisation

    Wie auch der originale Discord Bot, hat dieser Bot auch die Funktion die Donator Rolle im Forum und Discord zu synchronisieren. Alle x Sekunden (einstellbar in der Config, standardmäßig auf alle 10 Minuten) werden diese Donator automatisch synchronisiert. Eine manuelle Synchronisation vom eigenen Discord Rang ist mit dem Befehl !discord möglich. Admins ist es möglich mit !donator-sync alle Donator zu synchronisieren.


    Random Bilder

    Der !bpm Befehl ist auch wieder vertreten und zeigt einem ein ausgewähltes oder zufälliges lustiges Bild aus der Geschichte von Breadfish an. Mit !bpm-cache kann der BPM Cache von den Admins neu geladen werden.


    Moderative Befehle

    Die bekannten !kick und !ban Befehle sind natürlich auch vorhanden. Wie in eigentlich jedem Discord Bot.


    Weitere Features wie z.B. der !uptime Befehl sind auch bereits vorhanden, diese Liste wird sich aber wahrscheinlich über die Zeit füllen.

    (P.S: Die genannten Features sind zum JETZIGEN ZEITPUNKT noch nicht alle im Bot integriert, sind aber geplant)



    Source Code:

    Der alte Breadfish Bot war Closed Source, aber dieser Bot ist komplett Open Source.

    Der Source Code ist zu finden auf dem offiziellen Breadfish GitLab: https://git.breadfish.de/LeonM…ejs-breadfish-discord-bot

    Ihr müsst angemeldet sein um den Source Code sehen zu können, der Zugang dazu ist nur für Breadfish Mitglieder gedacht.

    Falls ihr die offenen Features sehen wollt oder selber ein neues Feature vorschlagen wollt könnt ihr die Issues des Repositories dafür verwenden: https://git.breadfish.de/LeonM…adfish-discord-bot/issues

    Fehler können dort natürlich auch gemeldet werden.



    Credits:

    Bot made by Me

    Original bot made by maddin

    Special thanks to root and seegras



    Wenn ihr Fragen zum Bot habt oder mir einfach nur sagen wollt was für ein geiler Typ ich bin, könnte ihr gerne unter diesem Thread schreiben. :thumbsup:

  • Douq

    Hat das Thema freigeschaltet
  • LeonMrBonnie

    Hat den Titel des Themas von „NodeJS Breadfish GitHub Bot“ zu „NodeJS Breadfish Discord Bot“ geändert.
  • cee9bc0d6b.jpg


    Die Befehle !stoll und !henner um Zitate auszugeben wurden hinzugefügt.

    Auch wurde der BPM Befehl überarbeitet und zeigt nun auch den Dateinamen an.


    BPM verwendet nun auch statt dem normalen NPM Request das axios Package und funktioniert nun auch wieder (bisher) ohne Fehler.

  • Der !donator Befehl wurde überarbeitet und zeigt nun an ob man den Donator Status bekommen hat oder nicht.


    Der !wetter Befehl wurde hinzugefügt.

  • Ich werde ab morgen die Entwicklung des Bots wieder beginnen.


    Vorschläge für neue Features/Befehle können entweder hier gepostet werden, oder im Repo als Issue.

  • Ich werde ab morgen die Entwicklung des Bots wieder beginnen.

    Das war übrigens ne Lüge, ich hab heute erst angefangen.


    Ich habe ein bisschen am Quiz gearbeitet. Die Datenbank wurde gefixxt (es sollten nun keine #'s mehr in den Antworten sein). RegEx sollte bei den Antworten nun auch gehen. Wenn das Quiz automatisch beendet wird, wird nun die Nachricht auch automatisch gesendet. Mit !skipquiz kann jetzt auch derjenige das Quiz neustarten der das Quiz gestartet hat. Das Leaderboard wurde nun auch gefixxt. (Zeigt keine User mit 0 Punkten mehr an)


  • Der Spaghetti Code des Quiz Systems wurde nun auch neu geschrieben und ist nun sehr viel übersichtlicher.

    Vorher - https://git.breadfish.de/LeonM…1a2b0e8a2ea27/src/quiz.js

    Nachher - https://git.breadfish.de/LeonM…3fcae18a70989/src/quiz.js

  • giphy.gif?cid=790b7611fceaeb6a2711ebf99df5ce3abb605456ba56899d&rid=giphy.gif


    just joking, Danke dass du unermütlich an dem Bot arbeitest - vielleicht sieht man nochmal den einen oder anderen User auf dem Discord bei einer lustigen Quizrunde

    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN