[Java / kotlin] Kai ・ Wie erstelle ich einen Discord Bot? Lassen Sie uns einen Befehl implementieren, um zu grüßen.

Vor langer Zeit habe ich unter dem Titel "Wie erstelle ich einen Discord-Bot (Java)" erstellt, aber die Unterstützung für die Bibliothek ist abgelaufen, und jetzt kann ich keinen Bot mehr erstellen, indem ich auf diesen Artikel verweise. Und es scheint.

Es scheint, dass die Nachfrage nach Zwietracht heutzutage allmählich zunimmt, wenn wir gezwungen sind, zu Hause und im Online-Unterricht zu lernen, aber wir werden vorstellen, wie man "Bot" macht, um es noch bequemer zu machen.

In diesem Artikel zeige ich Ihnen, wie man in Java und Kotlin schreibt!

Umgebung

Bibliothek beschaffen

Bitte schreiben Sie den folgenden Inhalt in `<Abhängigkeiten> </ Abhängigkeiten>` von pom.xml.

        <!--Hauptbibliothek (erforderlich)-->
        <dependency>
            <groupId>net.dv8tion</groupId>
            <artifactId>JDA</artifactId>
            <version>4.1.1_101</version>
        </dependency>

        <!--Bibliothek zur Befehlsverarbeitung (erforderlich)-->
        <dependency>
            <groupId>com.jagrosh</groupId>
            <artifactId>jda-utilities</artifactId>
            <version>3.0.3</version>
            <scope>compile</scope>
            <type>pom</type>
        </dependency>

        <!--Wenn Sie Kotlin verwenden, diese beiden-->
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib-jdk8</artifactId>
            <version>1.3.72</version>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-test</artifactId>
            <version>1.3.72</version>
            <scope>test</scope>
        </dependency>

Erstellen Sie ein Bot-Konto und laden Sie es zum Server ein

Da die Erklärung lang sein wird, holen Sie sich das Token unter Bezugnahme auf meinen Artikel ([hier](https://qiita.com/itsu_dev/items/825e4ed32bf32e4b64b2# Extra Edition, um das Anwendungsregistrierungs-Token zu erhalten)) und legen Sie es auf dem Server ab Bitte lade mich ein.

Login / Authentifizierungsteil

Wenn Sie sich nicht als Bot anmelden, wird nichts gestartet. Melden Sie sich also mit dem zuvor erhaltenen Token bei Discord an!

Führen Sie den folgenden Code aus und der Bot ist online, wenn alles gut geht.

Java

Main.java


package dev.itsu.discordbot;

import com.jagrosh.jdautilities.command.CommandClientBuilder;
import com.jagrosh.jdautilities.command.CommandClient;
import net.dv8tion.jda.api.AccountType;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.entities.Activity;

class Main {
    
    private static JDA jda;
    private static final String TOKEN = "MY_TOKEN"; //Erhaltener Bot-Token
    private static final String COMMAND_PREFIX = "!"; //Befehlspräfix

    public static void main(String args[]) {
        //Generieren Sie einen Ereignis-Listener, der Befehle verarbeitet
        CommandClient commandClient = new CommandClientBuilder()
            .setPrefix(COMMAND_PREFIX) //Befehlspräfix
            .setStatus(OnlineStatus.ONLINE) //Online-Statuseinstellungen
            .setActivity(Activity.watching("YouTube")) //Statuseinstellungen (Ansehen, Spielen usw.)
            .build();
        
        jda = new JDABuilder(AccountType.BOT)
            .setToken(TOKEN) //Token setzen
            .addEventListeners(commandClient) //setze commandClient
            .build();
    }

}

kotlin

Main.kt


package dev.itsu.discordbot

import com.jagrosh.jdautilities.command.CommandClientBuilder
import net.dv8tion.jda.api.AccountType
import net.dv8tion.jda.api.JDA
import net.dv8tion.jda.api.JDABuilder
import net.dv8tion.jda.api.OnlineStatus
import net.dv8tion.jda.api.entities.Activity

private lateinit var jda: JDA
private const val TOKEN = "MY_TOKEN" //Erhaltener Bot-Token
private const val COMMAND_PREFIX = "!" //Befehlspräfix

fun main() {
        //Generieren Sie einen Ereignis-Listener, der Befehle verarbeitet
        val commandClient = CommandClientBuilder()
                .setPrefix(COMMAND_PREFIX) //Befehlspräfix
                .setStatus(OnlineStatus.ONLINE) //Online-Statuseinstellungen
                .setActivity(Activity.watching("YouTube")) //Statuseinstellungen (Ansehen, Spielen usw.)
                .build()

        jda = JDABuilder(AccountType.BOT)
                .setToken(TOKEN) //Token setzen
                .addEventListeners(commandClient) //setze commandClient
                .build()
}

Status Änderung

Werte, die für den Online-Status festgelegt werden können

OnlineStatus.ONLINE //online
OnlineStatus.OFFLINE //offline
OnlineStatus.IDLE //Weg
OnlineStatus.DO_NOT_DISTURB //Beschäftigt
OnlineStatus.INVISIBLE //Online-Status ausblenden

Wert, der für den Status festgelegt werden kann

Activity.watching("name") //Name beobachten
Activity.listening("name") //Name spielen
Activity.streaming("name", "url") //Name liefern
Activity.playing("name") //Name spielen

Versuchen Sie es mit dem Befehl

Dieses Mal werde ich versuchen, den Befehl "Begrüßen Sie die Person, die den Befehl ausgeführt hat" zu implementieren.

Implementieren Sie den Befehl

Um den Befehl zu implementieren, müssen Sie eine Klasse erstellen, die von `` `om.jagrosh.jdautilities.command.Command``` erbt.

Java

HelloCommand.java


package dev.itsu.discordbot

import com.jagrosh.jdautilities.command.Command;
import com.jagrosh.jdautilities.command.CommandEvent;

class HelloCommand extends Command {

    public HelloCommand() {
        this.name = "hello"; //Legen Sie den Befehlsnamen fest (!Kann mit Hallo ausgeführt werden)
        this.help = "Sag einfach Hallo"; //Befehlsbeschreibung (!Erläuterung wird angezeigt, wenn Sie die Hilfe ausführen.
    }

    //Die Methode, die aufgerufen wird, wenn der Befehl ausgeführt wird
    @Override
    public void execute(CommandEvent event) {
        event.reply("Hallo," + event.getAuthor().getName() + "San!"); //Antworten
    }

}

kotlin

HelloCommand.kt


package dev.itsu.discordbot

import com.jagrosh.jdautilities.command.Command
import com.jagrosh.jdautilities.command.CommandEvent

class HelloCommand : Command() {

    init {
        name = "hello" //Legen Sie den Befehlsnamen fest (!Kann mit Hallo ausgeführt werden)
        help = "Sag einfach Hallo" //Befehlsbeschreibung (!Erläuterung wird angezeigt, wenn Sie die Hilfe ausführen.
    }

    //Funktion, die beim Ausführen eines Befehls aufgerufen wird
    override fun execute(event: CommandEvent) {
        event.reply("Hallo,${event.author.name}San!") //Antworten
    }

}

Registrieren Sie den Befehl

Sie können Befehle nicht einfach durch Erstellen einer Klasse ausführen. Um Befehle ausführen zu können, muss die Klasse des implementierten Befehls in CommandClient registriert werden. Gehen Sie zurück zu Main.java (Main.kt) und nehmen Sie die folgenden Änderungen vor.

Wenn Sie dies ausführen, "Hallo, (Benutzername) 's!" Wenn Sie das "! Hallo" in der Zwietracht ausführen, ist uns zurück Bot mit!

Java

Main.java


package dev.itsu.discordbot;

import com.jagrosh.jdautilities.command.CommandClientBuilder;
import com.jagrosh.jdautilities.command.CommandClient;
import net.dv8tion.jda.api.AccountType;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.entities.Activity;

class Main {
    
    private static JDA jda;
    private static final String TOKEN = "MY_TOKEN";
    private static final String COMMAND_PREFIX = "!";

    public static void main(String args[]) {
        CommandClient commandClient = new CommandClientBuilder()
            .setPrefix(COMMAND_PREFIX)
            .setStatus(OnlineStatus.ONLINE)
            .setActivity(Activity.watching("YouTube")
            .addCommands(new HelloCommand()) //Registrieren Sie den Befehl hier!
            .build();
        
        jda = new JDABuilder(AccountType.BOT)
            .setToken(TOKEN)
            .addEventListeners(commandClient)
            .build();
    }

}

kotlin

Main.kt


package dev.itsu.discordbot

import com.jagrosh.jdautilities.command.CommandClientBuilder
import net.dv8tion.jda.api.AccountType
import net.dv8tion.jda.api.JDA
import net.dv8tion.jda.api.JDABuilder
import net.dv8tion.jda.api.OnlineStatus
import net.dv8tion.jda.api.entities.Activity

private lateinit var jda: JDA
private const val TOKEN = "MY_TOKEN"
private const val COMMAND_PREFIX = "!"

fun main() {
        val commandClient = CommandClientBuilder()
                .setPrefix(COMMAND_PREFIX)
                .setStatus(OnlineStatus.ONLINE)
                .setActivity(Activity.watching("YouTube"))
                .addCommands(HelloCommand()) //Registrieren Sie den Befehl hier!
                .build()

        jda = JDABuilder(AccountType.BOT)
                .setToken(TOKEN)
                .addEventListeners(commandClient)
                .build()
}

Tatsächlich verwendet die Methode (Funktion) addCommands () Argumente variabler Länge, sodass Sie eine beliebige Anzahl anderer implementierter Befehle wie unten gezeigt registrieren können.

addCommands(HelloCommand(), StatusCommand())

Wenn Sie weitere Funktionen haben, die wir vorstellen sollen, oder wenn Sie Vorschläge haben, hinterlassen Sie bitte einen Kommentar.

Recommended Posts

[Java / kotlin] Kai ・ Wie erstelle ich einen Discord Bot? Lassen Sie uns einen Befehl implementieren, um zu grüßen.
Wie erstelle ich einen Discord Bot (Java)
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
So erstellen Sie ein Java-Array
So erstellen Sie eine Java-Kalenderzusammenfassung
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
Ich möchte es zusätzlich implementieren, während ich Kotlin auf einer Site verwende, auf der Java ausgeführt wird
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Einführung in den Java-Befehl
[Anfänger] Versuchen Sie, mit Java ein einfaches RPG-Spiel zu erstellen ①
Ich wollte nur eine reaktive Eigenschaft in Java erstellen
So stellen Sie eine Kotlin (Java) -App auf AWS fargate bereit
Ich habe versucht, eine Webanwendung voller Fehler mit Kotlin zu implementieren
Ich habe einen RESAS-API-Client in Java erstellt
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
Java - So erstellen Sie JTable
[Java] Mach es konstant
[Java] So implementieren Sie Multithreading
Machen Sie einen Diamanten mit Java
So implementieren Sie einen Job, der die Java-API in JobScheduler verwendet
So führen Sie das Kotlin Coroutine-Beispiel über die Befehlszeile aus
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
Wie man einen revolutionären Diamanten mit Java für Aussage macht wwww