Discord Bot - Welche Bibliothek, wie macht ihr das?

  • Es klang nur so als ob du lieber was anderes nehmen willst, daher die Frage :)

    Nein nein ^^ ich habe durchaus vorher die verschiedenen Möglichkeiten angeschaut und auch zb sowas wie eine php klasse für jda gefunden aber ich fand das die mehrheit der entwickler zu java oder js tendieren. Da JDA mMn. das ist was die meisten nutzen viel die Wahl darauf.

    Es geht vorran ;)

  • Also wenn ich die Wahl hätte würde ich auch zu Python wechseln, nur ist schon viel gemacht jetzt bei mir und mir fehlt die Zeit aktuell.

    Aber wenn du lernen willst würde ich dir eher die Doc‘s schicken ist ziemlich selbst erklärend auch

    Erst erstellst du ein Command für deinen Modal das du aufrufen willst (ich denke wie Commands gebaut werden weißt du)

    Modal Doc: https://ci.dv8tion.net/job/JDA5/javad…ents/Modal.html

    Dann gettest du dir die Inputs und baust daraus den Embed das wars dann schon, hier gehe ich auch von aus das du weißt wie Embeds gebaut werden. Falls doch nicht gerne nachfragen :)

    ModalInteractionEvent Doc: https://ci.dv8tion.net/job/JDA5/javad…ctionEvent.html


    Hier ist auch ein gutes Code Beispiel ohne Embed, aber statt dem createTicket baust du dann eben dein Embed.

    Beispiel findest du hier unter „Modals“: https://jda.wiki/using-jda/interactions/

  • Hallo,

    gesagt, getan. Ich hatte zwar etwas anderes unter einem Formular im Kopf aber die Variante ist auch klasse.

    Da wähle ich quasi schonmal einen Kanal aus und danach geht das Modal auf ..

    Die Eingaben werden auch übergeben und das embed erstellt allerdings stört mich das er anscheinend mit einem fehler abbricht. Die Konsole zeigt nichts dazu an. Weisst du dazu Rat Blacksonny ?

    Nachtrag: Konnte ich lösen.

    Nachtrag: Was ich ja blöd finde und auch keien Lösung für finde ist

    Cannot make a modal with more than 5 components!

    ...

  • Ich habe bisher nicht mehr als 5 Felder gebraucht, vielleicht macht es dann Sinn verschachtelte Modals zu bauen oder das ist nicht die beste Lösung für dein Vorhaben.

    Aber viele deiner Felder sind überflüssig, da du dir den Author, die Author URL und auch sein Profilbild von dem User der den Command ausführt getten könntest.
    Außer du hast irgendeinen UseCase dafür, dass man den Author explizit benennen müsste. evarioo

  • Aber viele deiner Felder sind überflüssig, da du dir den Author, die Author URL und auch sein Profilbild von dem User der den Command ausführt getten könntest.

    .... oh mann .. manchmal bin ich echt verwundert über meine eigene Dummheit. Natürlich kann man das so lösen ich bin nur noch immer bei dem Panel Modus gewesen und habe einfach nicht nachgedacht. Wozu sollte man das auch mit anderen Daten füttern wollen .. Danke für den Tritt :D

    Das mit dem Kanal könnte man auch quasi so lösen das man sagt das embed erscheint da wo man den befehl ausführt :D

  • Hallööö,

    aus gegebenem Anlass hole ich hier mal aus der Versenkung und kann berichten das ich schon viel weiter gekommen bin und mir nebenbei auch viel java angeeignet habe :)

    Ein grosse Frage die ich habe .. wie verhindere ich das wenn ich mehrere Button Interaction events habe das diese nur dann ausgeführt werden wenn die auch gebraucht werden? quasi ne art id die ich checken kann?

  • Hey ihr lieben!

    Tut mir mega leid das es nur schleppend hier voran geht aber aktuell programmiere ich null irgendwas. Habe den Beitrag total vergessen und daher hier heute erst euren Code Schnippsel am start:

    Mittlerweile habe ich viel gelesen und denke das ich den button über die id + create-ticket ansprechen kann bzw so auf den klick lausche oder?

    user.getId() + ":create_ticket"

    123123123:create_ticket wäre dann denke ich die ID vom Button?

    SO versuche ich auf den Button zu reagieren:

    Liebe Grüsse und riesen dank für eure Geduld .. Schön zu sehen das es hier noch weiter geht!

  • Hey, aktuell bin ich kaum Zuhause und somit ist der PC aktuell auch kaum an .. Heute war ich mal für 30 Minuten daheim und haben direkt mal geschaut:

    Oben ist der Ausschnitt aus meinem Code und daher habe ich auch die Weisheit wie das mit der ID laufen könnte. Leider war keine Zeit zum Testen da aber ich frage mich dennoch ist es überhaupt notwendig die Userid mit zu übergeben?

    Plan ist einfach folgender: Ich oder wer auch immer löst mit !ticket setup den command aus .. entweder kann er dabei eine Channel id angeben oder es wird im aktuellen Channel eine embed message gepostet mit einem Button drunter womit der entsprechende Benutzer dann per Klick ein Ticket eröffnet wird .. Ich brauche für eine rollenvergabe und zb für Informationen dann auch die Userid also ist das zwingend nötig denke ich einfach mal.

    @Override
       public void onButtonInteraction(ButtonInteractionEvent event) {
           String[] id = event.getComponentId().split(":");
           String userID = id[0];
           String action = id[1];
           if (!userID.equals(event.getUser().getId()))
               return;
           event.deferReply().queue();
           switch (action)
           {
               case "create_ticket":

                   System.out.println(colors.ANSI_WHITE + "EVARIOO | " + colors.ANSI_GREEN + "Bot Token ist gültig");
           }
       }

    Ist das denn schon der richtige Weg zu meinem Erfolg? 😜 Ich denke das das im Switch case dann die ganzen Action rein schiebe wie zb den textchannel für das neue Ticket anlegen, Support bzw alle rollen informieren, dem User rechte für den Channel zuweisen etc

    Das System.out war nur ein Phrase zum Testen.

    Sorry für den kiddy Text ohne Punkt und Komma aber am Handy isses mies ;) verzeiht mir.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!