__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.
...
<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>
...
...
repositories {
...
jcenter() //This prevents issues with transitive dependencies
maven {
url "https://jitpack.io"
}
}
...
dependencies {
...
compile "com.github.austinv11:Discord4J:@VERSION@"
}
...
https://austinv11.github.io/Discord4J/downloads.html
public static IDiscordClient login(String token) {
ClientBuilder clientBuilder = new ClientBuilder();
clientBuilder.withToken(token);
return clientBuilder.login();
}
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);
@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.
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.
Es wird von der IChannel-Klasse bereitgestellt.
IChannel#sendMessage(String);
IUser#getName()
IMessage#getMessage()
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!");
}
}
}
Gehen Sie zu https: //discordapp.com/developers/applications/me
Klicken Sie auf Neue App
Geben Sie einen geeigneten Namen in APP NAME ein und klicken Sie auf App erstellen
Notieren Sie sich die Token im roten Rahmen (wird später verwendet).
Scrollen Sie ein wenig, um dies zu finden, und klicken Sie auf Bot-Benutzer erstellen
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)
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
Recommended Posts