Wie erstelle ich einen Discord Bot (Java)

__2020 / 5/19 Nachtrag __ Hier stellt vor, wie der neueste Bot erstellt wird.

__ 27.10.2019 Nachtrag __ Es scheint, dass die auf dieser Seite behandelte Discord 4J-Bibliothek eingestellt und durch eine andere Bibliothek ersetzt wurde. Daher ist es derzeit sehr schwierig oder unmöglich, einen Bot mit dieser Methode zu entwickeln. Vielen Dank, dass Sie dies als Referenz bei der Entwicklung von Bot gelesen haben. Wenn ich Zeit habe, möchte ich einen Artikel darüber schreiben, wie man sich mit dem neuen Discord 4J entwickelt.

Dieses Mal werde ich einen einfachen DiscordBot mit der auf GitHub veröffentlichten Discord4j -Bibliothek entwickeln.

Um Bot verwenden zu können, ist es außerdem erforderlich, die Anwendung bei Discord zu registrieren und ein Token zu erhalten, das in der zusätzlichen Ausgabe am Ende der Seite vorgestellt wird.

Beschaffen Sie die Bibliothek

Maven-Repository (README-Zitat)

...
<repositories>
  ...
  <repository> <!-- This repo fixes issues with transitive dependencies -->
    <id>jcenter</id>
    <url>http://jcenter.bintray.com</url>
  </repository>
  <repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
  </repository>
</repositories>
...
<dependencies>
  ...
  <dependency>
    <groupId>com.github.austinv11</groupId>
    <artifactId>Discord4J</artifactId>
    <version>@VERSION@</version>
  </dependency>
</dependencies>
...

Gradle (README-Zitat)

...
repositories {
  ...
  jcenter() //This prevents issues with transitive dependencies
  maven {
    url  "https://jitpack.io"
  }
}
...
dependencies {
  ...
  compile "com.github.austinv11:Discord4J:@VERSION@"
}
...

Bibliotheksglas

https://austinv11.github.io/Discord4J/downloads.html

Spielen Sie mit der Bibliothek (API)

Melden Sie sich bei Discord an

    public static IDiscordClient login(String token) {
        ClientBuilder clientBuilder = new ClientBuilder();
        clientBuilder.withToken(token);
        return clientBuilder.login();
    }

Handhabung des Events

Hörerregistrierung

Um ein Ereignis zu verarbeiten, müssen Sie zuerst einen Listener registrieren. Bitte fügen Sie nach dem Anmelden den folgenden Code hinzu. Fügen Sie eine Instanz der für den Listener verwendeten Klasse in das Argument ein.

Außerdem werden wir dieses Mal die Registrierung von Hörern mithilfe von Anmerkungen einführen.

client.getDispatcher().registerListener(Object listener);

wird bearbeitet

@EventSubscriber
public void onReady(ReadyEvent event) {
    System.out.println("Bot bereit!");
}

@EventSubscriber
public void onMessage(MessageReceivedEvent event) throws RateLimitException, DiscordException, MissingPermissionsException {
    System.out.println(event.getAuthor().getName() + """" + event.getMessage().getContent() + "Ich habe gepostet.");
}

Die onReady-Methode wird aufgerufen, sobald die Anmeldung abgeschlossen ist, und die onMessage-Methode wird aufgerufen, wenn der Chat auf dem Kanal veröffentlicht wird.

Sie können Ereignisse erfassen, indem Sie die EventSubscriber-Anmerkung hinzufügen.

Informationen, die von MessageReceivedEvent abgerufen werden können

message.getAuthor() //IUser-Objekt des Buchungsbenutzers
message.getMessage() //Geposteter Chat IMessage-Objekt
message.getChannel() //IChannel-Objekt des Kanals, zu dem das gesendete Bit gehört
//Eine solche.

Sende eine Nachricht

Es wird von der IChannel-Klasse bereitgestellt.

IChannel#sendMessage(String);

Akquisitionsbezogene Stichprobe

Benutzernamen abrufen

IUser#getName()

Nachrichteninhalt abrufen

IMessage#getMessage()

Betreff: Machen Sie einen einfachen Bot

Als Beispiel möchte ich einen Bot erstellen, um zu antworten, wenn er mit "Hallo" gepostet wird.

import sx.blah.discord.api.ClientBuilder;
import sx.blah.discord.api.IDiscordClient;
import sx.blah.discord.api.events.EventSubscriber;
import sx.blah.discord.handle.impl.events.ReadyEvent;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IChannel;
import sx.blah.discord.handle.obj.IMessage;
import sx.blah.discord.handle.obj.IUser;
import sx.blah.discord.util.DiscordException;
import sx.blah.discord.util.MissingPermissionsException;
import sx.blah.discord.util.RateLimitException;

public class Example {
	
	private static String TOKEN = "TOKEN"; //Discord Bot Token
	
	private static IDiscordClient client;
	
	public static void main(String args[]) {
		Example main = new Example();
		
		System.out.println("Bot starten...");
		
		client = new ClientBuilder().withToken(TOKEN).build();
		client.getDispatcher().registerListener(main);
		client.login();
	}
	
	@EventSubscriber
	public void onReady(ReadyEvent event) {
		System.out.println("Bot bereit!");
	}

	@EventSubscriber
	public void onMessage(MessageReceivedEvent event) throws RateLimitException, DiscordException, MissingPermissionsException {
		IMessage message = event.getMessage();
		IUser user = message.getAuthor();
		if (user.isBot()) return;

		IChannel channel = message.getChannel();
		String mes = message.getContent();

		if (mes.contains("Hallo")) {
			channel.sendMessage("Hallo," + user.getName() + "San!");
		}
	}

}

Extra: App-Registrierung & Token-Erwerb

  1. Gehen Sie zu https: //discordapp.com/developers/applications/me

  2. Klicken Sie auf Neue App 1.PNG

  3. Geben Sie einen geeigneten Namen in APP NAME ein und klicken Sie auf App erstellen 2.PNG

  4. Notieren Sie sich die Token im roten Rahmen (wird später verwendet). 3.PNG

  5. Scrollen Sie ein wenig, um dies zu finden, und klicken Sie auf Bot-Benutzer erstellen 4.PNG

  6. Klicken Sie nach Ja, tun Sie es! Klicken Sie auf Klicken, um das angezeigte Token anzuzeigen und zu notieren. (Überprüfen Sie auch für öffentlichen Bot) 5.PNG

  7. Ersetzen Sie [CLIENT_ID] in der folgenden URL durch die Client-ID, die Sie in Schritt 4 notiert haben, um darauf zuzugreifen.

https://discordapp.com/api/oauth2/authorize?client_id=[CLIENT_ID]&permissions=0&scope=bot
  1. Wählen Sie den Server aus, auf dem der Bot beitreten soll, und klicken Sie auf die Schaltfläche Authentifizieren. 6.PNG

Recommended Posts

Wie erstelle ich einen Discord Bot (Java)
So erstellen Sie einen Java-Container
So erstellen Sie ein Java-Array
So erstellen Sie eine Java-Kalenderzusammenfassung
Java - So erstellen Sie JTable
So erstellen Sie einen JDBC-Treiber
So erstellen Sie einen Begrüßungsbildschirm
So erstellen Sie ein Jenkins-Plug-In
Wie erstelle ich ein Maven-Projekt?
Einfach, Slack Bot mit Java zu machen
[Einführung in Java] So schreiben Sie ein Java-Programm
Wie man einen revolutionären Diamanten mit Java für Aussage macht wwww
Wie man ein schattiertes Glas macht
Java Discord Bot-Erstellung
So zeigen Sie eine Webseite in Java an
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
So konvertieren Sie einen Soliditätsvertrag in eine Java-Vertragsklasse
So erstellen Sie eine leichte JRE für den Vertrieb
Einfacher LINE BOT mit Java Servlet
[Java] Wie man mehrere for-Schleifen einzeln macht
[Java / kotlin] Kai ・ Wie erstelle ich einen Discord Bot? Lassen Sie uns einen Befehl implementieren, um zu grüßen.
So erstellen Sie eine App mit einem Plug-In-Mechanismus [C # und Java]
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
So senken Sie die Java-Version
So deinstallieren Sie Java 8 (Mac)
So springen Sie von Eclipse Java zu einer SQL-Datei
Verwendung von Java Optional
java: Wie schreibe ich eine generische Typliste? [Hinweis]
[Java] Wie man aus Janken rauskommt (entspricht Paiza Rang A)
So führen Sie einen Java-Komponententest durch (JUnit & Mockito & PowerMock)
So minimieren Sie Java-Images
Wie schreibe ich einen Java-Kommentar
Wie hinterlasse ich einen Kommentar?
So funktioniert JavaScript auf einer bestimmten Seite
Verwendung der Java-Klasse
So erstellen Sie einen Daten-URI (base64) in Java
[Java] Verwendung von removeAll ()
[Java] So zeigen Sie Wingdings an
[Java] So erhalten Sie eine Anfrage per HTTP-Kommunikation
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Verwendung von Java Map
[Java] Mach es konstant
[Java] Wie man Aufgaben regelmäßig ausführt
So legen Sie Java-Konstanten fest
[Java] So schneiden Sie eine Zeichenfolge zeichenweise aus
[Java] So löschen Sie ein bestimmtes Zeichen aus einer Zeichenfolge
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So konvertieren Sie eine Datei in ein Byte-Array in Java
Verwendung von Java-Variablen
So konvertieren Sie Java Base
[Schienen] Wie man Samen macht
Wie man einen Cache erstellt, ohne zu viel nachzudenken
Wie erstelle ich einen MOD für Slay the Spire?