Ich denke, es ist einfacher zu machen, weil es viele Artikel gibt, die Python oder JavaScript anstelle von Java einführen. Ich verstehe Python oder JavaScript nicht, also schreibe ich es in Java Personen, die Python oder JavaScript verstehen, sollten in Python oder JavaScript schreiben, ohne diesen Artikel zu lesen
jre 1.8.0_241 jdk 1.8.0_241 Intellij idea community 2019.3.3 Alles was du schreiben kannst
Wenn Sie einen Bot erstellen, benötigen Sie einen Token. Bereiten Sie diesen Bereich vor
Gehen Sie zum Discord Developer Portal (https://discordapp.com/developers). Sie werden wahrscheinlich aufgefordert, sich zum ersten Mal anzumelden. Melden Sie sich daher bitte mit Ihrem eigenen Konto an
Wählen Sie im Feld Anwendungen die Option Neue Anwendung
Geben Sie den Anwendungsnamen (alles ist akzeptabel, solange es unterschieden werden kann) in das Feld NAME ein und erstellen Sie ihn.
Wählen Sie in der linken Spalte Bot aus und wählen Sie Bot hinzufügen
Benutzername-Symbol Erforderliche Berechtigung Ändern Sie die Bot-Einstellungen, z. B. ob es sich um einen öffentlichen Bot handelt
Wählen Sie schließlich Kopieren aus Bots TOKEN und fügen Sie es in einen Notizblock ein. ** Wenn dieses Token nach außen leckt, kann der Bot missbraucht werden. Seien Sie also vorsichtig, wenn Sie damit umgehen. ** Insbesondere beim Veröffentlichen des Quellcodes auf GitHub usw. müssen Sie das Token nur ablegen, wenn Sie es separat für Eigenschaften usw. verwenden.
Öffnen Sie nun die lang erwartete Codierung Intellij
Einfach in Maven und Gradle zu schreiben
Der Herr macht mit Maven
Ich werde Pom vorerst umschreiben
Dieses Mal beginnt es mit einer Batch-Datei. Schreiben Sie sie also neu, als würden Sie eine ausführbare JAR-Datei mit einem Manifest erstellen
Die abhängige Bibliothek kann Discord4j oder JDA sein, aber die Ereignisverarbeitung usw. ist ein Sturm des Lambda-Ausdrucks usw. Da die Abhängigkeiten ärgerlich sind, werde ich dieses Mal eine Bibliothek namens JavaCord verwenden.
Der Pom mit Abhängigkeiten usw. ist vorerst so
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.javacord</groupId>
<artifactId>javacord</artifactId>
<version>3.0.5</version>
<type>pom</type>
</dependency>
</dependencies>
<build>
<defaultGoal>clean package</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>default-jar</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<finalName>${project.build.finalName}</finalName>
<archive>
<manifest>
<mainClass></mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</project>
Ändern Sie die Grundelemente und den Manifestinhalt entsprechend Ihrem Projekt
Das src-Paket passt auch dazu
Es ist endlich das Hauptthema
Welche Art von Bot zu machen ist, hängt von der Person ab, daher werde ich nur die Grundlagen erklären
Holen Sie sich die API von JavaCord. Grundsätzlich ist es so, als würden Sie mit Discord interagieren
Verwenden Sie das Token, das Sie beim Erstellen des Bots notiert haben. Wenn Sie die Quelle nicht veröffentlichen möchten, können Sie sie direkt in die Klasse schreiben.
Verwenden Sie DiscordApiBuilder
String token = "Mein Zeichen";
DiscordApi api = new DiscordApiBuilder().setToken(token).login().join();
Wenn Sie die Sprachstufe nicht ändern, wird wahrscheinlich eine rote Linie angezeigt. Alt + Eingabetaste löst diese.
Geben Sie der API einfach einen Zuhörer für die Veranstaltung, aber im kleinen Maßstab können Sie ein Lambda schreiben Wenn Sie über Wartbarkeit nachdenken, sollten Sie eine weitere Listener-Klasse erstellen
MessageCreateListener kann die Übertragung von Nachrichten erkennen, die das Herzstück des Befehlssystems bilden. Es ist einfacher, das Befehlssystem zu verwenden, wenn Sie es selbst erstellen
api.addMessageCreateListener(messageCreateEvent -> {
Message message = messageCreateEvent.getMessage();
MessageAuthor author = messageCreateEvent.getMessageAuthor();
if(author.isBotUser()) return;
message.getChannel().sendMessage("Inhalt der Bemerkung:"+message.getContent());
});
Wenn der Sprecher im obigen Beispiel kein Bot ist, wird die Anweisung wiederholt. Sie wird in Lambda geschrieben, dies gilt jedoch auch für MessageCreateListener.
Repeat.java
public class Repeat implements MessageCreateListener {
@Override
public void onMessageCreate(MessageCreateEvent messageCreateEvent) {
Message message = messageCreateEvent.getMessage();
MessageAuthor author = messageCreateEvent.getMessageAuthor();
if(author.isBotUser()) return;
message.getChannel().sendMessage("Inhalt der Bemerkung:"+message.getContent());
}
}
api.addMessageCreateListener(new Repeat());
Dies ist in Ordnung und alle anderen Ereignisse können damit erkannt werden.
Ich habe es bereits auf der Veranstaltung geschrieben, aber Sie können es senden, indem Sie den Kanal abrufen, den Sie senden möchten, und sendMessage () verwenden.
Um ehrlich zu sein, wenn Sie die Ereignisverarbeitung kennen, können Sie selbst gehen Wenn Sie nicht verstehen, können Sie alles lösen, indem Sie JavaDoc von JavaCord lesen.
Discord 4j oder JDA sollten für sprachbezogene und fortgeschrittenere Operationen verwendet werden JavaCord befindet sich wahrscheinlich in der Entwicklung und wird in Zukunft nicht mehr aktualisiert
Warum haben Sie es dann verwendet? Es ist nur so, dass die API einfach zu verwenden war. Es ist ein dünner Artikel, aber danke fürs Lesen
JavaCord https://github.com/Javacord/Javacord JavaDoc https://docs.javacord.org/api/v/3.0.5/overview-summary.html
Stand 21. Juli 2020 Die Discord-API-Domäne hat sich kürzlich geändert. Ich bin mir nicht sicher, ob diese Bibliothek nicht verwendet werden kann. Ich denke, es ist in Ordnung, sie von discord4j abzurufen
Recommended Posts