[Java / kotlin] Kai ・ Comment créer un Discord Bot - Implémentons une commande pour saluer

Il y a longtemps, j'ai présenté comment faire un Discord Bot sous le titre de "Comment faire un Discord Bot (Java)", mais le support de la bibliothèque a expiré et maintenant je ne peux pas faire un Bot en me référant à cet article. Et il semble.

Il semble que la demande de Discord augmente progressivement ces jours-ci, lorsque nous sommes obligés d'étudier à la maison et à des cours en ligne, mais nous allons vous présenter comment faire "Bot" pour le rendre encore plus pratique.

Dans cet article, je vais vous montrer comment écrire en Java et en kotlin!

environnement

Acheter une bibliothèque

Veuillez écrire le contenu suivant dans `` </ dependencies> '' de pom.xml.

        <!--Bibliothèque principale (obligatoire)-->
        <dependency>
            <groupId>net.dv8tion</groupId>
            <artifactId>JDA</artifactId>
            <version>4.1.1_101</version>
        </dependency>

        <!--Bibliothèque pour le traitement des commandes (obligatoire)-->
        <dependency>
            <groupId>com.jagrosh</groupId>
            <artifactId>jda-utilities</artifactId>
            <version>3.0.3</version>
            <scope>compile</scope>
            <type>pom</type>
        </dependency>

        <!--Si vous utilisez kotlin, ces deux-->
        <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>

Créez un compte Bot et invitez-vous sur le serveur

Comme l'explication sera longue, récupérez le token en vous référant à mon article ([here](https://qiita.com/itsu_dev/items/825e4ed32bf32e4b64b2# extra edition-getting the application registration token)) et placez-le sur le serveur S'il-te-plait invite moi.

Partie connexion / authentification

Quoi qu'il en soit, si vous ne vous connectez pas en tant que Bot, rien ne démarrera, alors connectez-vous à Discord en utilisant le jeton que vous avez obtenu plus tôt!

Exécutez le code ci-dessous et le Bot sera en ligne si tout se passe bien.

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"; //Jeton Bot obtenu
    private static final String COMMAND_PREFIX = "!"; //Préfixe de commande

    public static void main(String args[]) {
        //Générer un écouteur d'événements qui gère les commandes
        CommandClient commandClient = new CommandClientBuilder()
            .setPrefix(COMMAND_PREFIX) //Préfixe de commande
            .setStatus(OnlineStatus.ONLINE) //Paramètres d'état en ligne
            .setActivity(Activity.watching("YouTube")) //Paramètres d'état (regarder, jouer, etc.)
            .build();
        
        jda = new JDABuilder(AccountType.BOT)
            .setToken(TOKEN) //Définir le jeton
            .addEventListeners(commandClient) //set 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" //Jeton Bot obtenu
private const val COMMAND_PREFIX = "!" //Préfixe de commande

fun main() {
        //Générer un écouteur d'événements qui gère les commandes
        val commandClient = CommandClientBuilder()
                .setPrefix(COMMAND_PREFIX) //Préfixe de commande
                .setStatus(OnlineStatus.ONLINE) //Paramètres d'état en ligne
                .setActivity(Activity.watching("YouTube")) //Paramètres d'état (regarder, jouer, etc.)
                .build()

        jda = JDABuilder(AccountType.BOT)
                .setToken(TOKEN) //Définir le jeton
                .addEventListeners(commandClient) //set commandClient
                .build()
}

Changement de statut

Valeurs pouvant être définies pour l'état en ligne

OnlineStatus.ONLINE //en ligne
OnlineStatus.OFFLINE //hors ligne
OnlineStatus.IDLE //Une façon
OnlineStatus.DO_NOT_DISTURB //Occupé
OnlineStatus.INVISIBLE //Masquer l'état en ligne

Valeur pouvant être définie pour le statut

Activity.watching("name") //Regarder le nom
Activity.listening("name") //jouer le nom
Activity.streaming("name", "url") //nom de livraison
Activity.playing("name") //jouer le nom

Essayez d'utiliser la commande

Cette fois, je vais essayer d'implémenter la commande "Donner un salut à la personne qui a exécuté la commande".

Implémentez la commande

Pour implémenter la commande, vous devez créer une classe qui hérite de om.jagrosh.jdautilities.command.Command.

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"; //Définissez le nom de la commande (!Peut être exécuté avec bonjour)
        this.help = "Dis juste bonjour"; //Description de la commande (!Explication affichée lorsque vous exécutez l'aide)
    }

    //La méthode appelée lorsque la commande est exécutée
    @Override
    public void execute(CommandEvent event) {
        event.reply("Bonjour," + event.getAuthor().getName() + "San!"); //réponse
    }

}

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" //Définissez le nom de la commande (!Peut être exécuté avec bonjour)
        help = "Dis juste bonjour" //Description de la commande (!Explication affichée lorsque vous exécutez l'aide)
    }

    //Fonction appelée lors de l'exécution d'une commande
    override fun execute(event: CommandEvent) {
        event.reply("Bonjour,${event.author.name}San!") //réponse
    }

}

Enregistrer la commande

Vous ne pouvez pas exécuter de commandes simplement en créant une classe. Afin de pouvoir exécuter des commandes, il est nécessaire d'enregistrer la classe de la commande implémentée dans CommandClient. Revenez à Main.java (Main.kt) et apportez les modifications suivantes.

Si vous exécutez ceci, "Bonjour, (nom d'utilisateur)!" Lorsque vous exécutez le "! Bonjour" dans Discord, nous revenons à Bot avec!

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()) //Enregistrez la commande ici!
            .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()) //Enregistrez la commande ici!
                .build()

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

En fait, la méthode (fonction) addCommands () prend des arguments de longueur variable, vous pouvez donc enregistrer n'importe quel nombre d'autres commandes implémentées comme indiqué ci-dessous.

addCommands(HelloCommand(), StatusCommand())

Si vous avez d'autres fonctionnalités que vous aimeriez que nous introduisions, ou si vous avez des suggestions, veuillez laisser un commentaire.

Recommended Posts

[Java / kotlin] Kai ・ Comment créer un Discord Bot - Implémentons une commande pour saluer
Comment créer un robot Discord (Java)
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
Comment créer un tableau Java
Comment créer un résumé de calendrier Java
Je l'ai fait en Java pour toujours rendre (a == 1 && a == 2 && a == 3) vrai
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
Je souhaite l'implémenter en plus lors de l'utilisation de kotlin sur un site exécutant Java
J'ai essayé de créer une fonction de connexion avec Java
Introduction à la commande java
[Débutant] Essayez de créer un jeu RPG simple avec Java ①
Je voulais juste créer une propriété réactive en Java
Comment déployer une application kotlin (java) sur AWS Fargate
J'ai essayé d'implémenter une application web pleine de bugs avec Kotlin
J'ai créé un client RESAS-API en Java
Je veux implémenter diverses fonctions avec kotlin et java!
Java - Comment créer JTable
[Java] Rendez-le constant
[Java] Comment implémenter le multithreading
Faire un diamant en utilisant Java
Comment implémenter un travail qui utilise l'API Java dans JobScheduler
Comment exécuter l'exemple Kotlin Coroutine à partir de la ligne de commande
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
Comment faire un diamant révolutionnaire en utilisant Java pour déclaration wwww