Java Discord Bot-Erstellung

Einführung

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

Umgebung

jre 1.8.0_241 jdk 1.8.0_241 Intellij idea community 2019.3.3 Alles was du schreiben kannst

Vorbereitung

Wenn Sie einen Bot erstellen, benötigen Sie einen Token. Bereiten Sie diesen Bereich vor

  1. 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

  2. Wählen Sie im Feld Anwendungen die Option Neue Anwendung New Application.png

  3. Geben Sie den Anwendungsnamen (alles ist akzeptabel, solange es unterschieden werden kann) in das Feld NAME ein und erstellen Sie ihn. TestBot.png

  4. Wählen Sie in der linken Spalte Bot aus und wählen Sie Bot hinzufügen Bot.png

  5. Benutzername-Symbol Erforderliche Berechtigung Ändern Sie die Bot-Einstellungen, z. B. ob es sich um einen öffentlichen Bot handelt

  6. 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.

Ein Projekt erstellen

Ö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

Bot-Erstellung

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

API abrufen

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.

Ereigniserkennung

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.

Messege senden

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.

Der Rest liegt an dir

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.

Schließlich

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

Referenz

JavaCord https://github.com/Javacord/Javacord JavaDoc https://docs.javacord.org/api/v/3.0.5/overview-summary.html

Nachtrag

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

Java Discord Bot-Erstellung
Erstellung von Java-Dateien
Erstellung eines Java-Verzeichnisses
Wie erstelle ich einen Discord Bot (Java)
Eclipse ~ Java-Projekterstellung ~
[Java] Taschenrechnerprogramm erstellen 1
Erstellen Sie mit Gradle ein Java-Multiprojekt
Erstellung der Play Framework 2.6 (Java) -Entwicklungsumgebung
Beliebiger Code zum Erstellen von Zeichenfolgen durch Java
Java
Java
Einfach, Slack Bot mit Java zu machen
[Verbesserung] Lernen Sie Java durch einfache Toolerstellung