Wie kann ich ein Panel mit einem JDA Bot verbinden (Discord)?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Generell benötigst du eine Schnittstelle zwischen beiden Anwendungen, über die miteinander kommuniziert werden kann. Aber gehen wir einmal Schritt für Schritt durch:

Für die Webseite benötigst du zunächst einmal ein HTML-Dokument, in dem du Buttons o.ä. Kontrollelemente festlegst, die wiederum GET-/POST-Requests an den Server schicken (via Formular, WebSockets oder AJAX-Request).

Ein Beispiel:

<a href="/dosomething">Do something</a>

Auf diesen GET-Request sollte eine von dir entwickelte Serveranwendung reagieren, die zunächst den richtigen Handler für die entsprechende Route (/dosomething) heraussucht. Dieser Handler übernimmt folgend die konkrete Anfrage bei Discord / an deine Desktop-Applikation.

Um mit der Discord API zu kommunizieren, gibt es nun verschiedene Möglichkeiten:

a) Du lässt deine Webseite über einen express-Server über eine nodejs-Plattform laufen und schreibst dir eine Serveranwendung mit JavaScript. Mit dem discord.js-Modul kannst du auf die Discord API zugreifen. Wie ich gesehen habe, gibt es auf Sitepoint sogar ein erstes Tutorial dazu: How to Build Your First Discord Bot with Node.js.

b) Du lässt deine Webseite über einen Webserver laufen, der mit Java umgehen kann (z.B. Wildfly, Tomcat, GlassFish, ...). Eine einfache Anwendung mit Servlets wird vermutlich schon ausreichen. In dieser Anwendung kannst du dann auch JDA nutzen.

Für deinen zweiten Anwendungsfall ist es ähnlich, nur dass du für deine Java Applikation dann noch eine API / eine Schnittstelle bauen musst, über die deine Webanwendung mit der Applikation kommunizieren kann.

Beispiel:

public interface IServer {
  void sayHello();
}

Das Interface wird in eine eigene Bibliothek ausgelagert, die sowohl in der Java-Webanwendung, als auch der Desktop-Applikation eingebunden wird.

Deine Applikation hat dann noch eine konkrete Implementation dieses Interface:

public class Server implements IServer {
  @Override
  public void sayHello() {
    System.out.println("Hello");
  }

  // do some further things ...
}

und künftig wird nur noch über das Interface operiert. Die Verbindung kannst du mittels RMI aufbauen. Ein paar Artikel dazu:

Vielen Dank für die ausführliche und informative Antwort! ich werde mich mal in den nächsten Tagen/Wochen dran setzen ^^

0