Création de Java Discord Bot

introduction

Je pense que c'est plus facile à faire car il existe de nombreux articles qui présentent Python ou JavaScript plutôt que Java. Je ne comprends pas Python ou JavaScript, donc je l'écris en Java Les personnes qui comprennent Python ou JavaScript doivent écrire en Python ou JavaScript sans lire cet article

environnement

jre 1.8.0_241 jdk 1.8.0_241 Intellij idea community 2019.3.3 Tout ce que vous pouvez écrire

Préparation

Lorsque vous créez un bot, vous aurez besoin d'un jeton, alors préparez cette zone

  1. Accédez au portail des développeurs Discord (https://discordapp.com/developers) Vous serez probablement invité à vous connecter pour la première fois, veuillez donc vous connecter avec votre propre compte

  2. Sélectionnez Nouvelle application dans le champ Applications New Application.png

  3. Entrez le nom de l'application (tout est acceptable tant qu'il peut être distingué) dans le champ NOM et créez-le. TestBot.png

  4. Sélectionnez Bot dans la colonne de gauche et sélectionnez Ajouter un bot Bot.png

  5. Icône de nom d'utilisateur Autorité requise Modifier les paramètres du bot, par exemple s'il s'agit d'un bot public

  6. Enfin, sélectionnez Copier du TOKEN du Bot et collez-le dans un bloc-notes. ** Si ce jeton fuit vers l'extérieur, le Bot peut être abusé, alors soyez prudent lorsque vous le manipulez ** Surtout lors de la publication du code source sur GitHub, etc., vous ne devez mettre le jeton que lorsque vous l'utilisez séparément pour les propriétés, etc.

Créer un projet

Maintenant, ouvrez le codage tant attendu Intellij

Facile à écrire en Maven et Gradle

Le Seigneur fait avec Maven

Je vais réécrire pom pour le moment

Cette fois, il commencera avec un fichier batch, alors réécrivez-le comme si vous faisiez un fichier jar exécutable avec un manifeste

La bibliothèque dépendante peut être Discord4j ou JDA, mais le traitement des événements, etc., est une tempête d'expressions lambda, etc. Puisque les dépendances sont ennuyeuses, j'utiliserai cette fois une bibliothèque appelée JavaCord.

Pour le moment, le pom avec les dépendances etc. est comme ça

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>

Modifiez les éléments de base et le contenu du manifeste en fonction de votre projet

Le package src correspond également à cela

Création de bot

C'est enfin le sujet principal

Le type de Bot à créer dépend de la personne, je n'expliquerai donc que les bases

Obtenir l'API

Obtenez l'API de JavaCord Fondamentalement, c'est comme interagir avec Discord en utilisant ce

Utilisez le jeton que vous avez noté lors de la création du bot. Si vous ne souhaitez pas publier la source, vous pouvez l'écrire directement dans la classe.

Utilisez DiscordApiBuilder

    String token = "Mon jeton";
    DiscordApi api = new DiscordApiBuilder().setToken(token).login().join();

Si vous ne modifiez pas le niveau de langue, vous obtiendrez probablement une ligne rouge. Alt + Entrée résout le problème.

Détection d'événement

Donnez simplement à l'API un auditeur pour l'événement, mais à petite échelle, vous pouvez écrire un lambda Si vous pensez à la maintenabilité, vous devez créer une autre classe d'écouteur

MessageCreateListener peut détecter la transmission de messages, qui est le cœur du système de commande. Il est plus facile d'utiliser le système de commande si vous le faites vous-même

     api.addMessageCreateListener(messageCreateEvent -> {
            Message message = messageCreateEvent.getMessage();
            MessageAuthor author = messageCreateEvent.getMessageAuthor();
            if(author.isBotUser()) return;
            message.getChannel().sendMessage("Contenu de la remarque:"+message.getContent());
        });

Dans l'exemple ci-dessus, si le locuteur n'est pas un Bot, l'instruction est répétée. Elle est écrite en lambda, mais il en va de même pour 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("Contenu de la remarque:"+message.getContent());
    }
}
    api.addMessageCreateListener(new Repeat());

C'est OK, et tous les autres événements peuvent être détectés avec cela.

Envoyer un message

Je l'ai déjà écrit lors de l'événement, mais vous pouvez l'envoyer en obtenant le canal que vous souhaitez envoyer et en utilisant sendMessage ()

Le reste dépend de toi

Pour être honnête, si vous connaissez le traitement des événements, vous pouvez y aller par vous-même Si vous ne comprenez pas, vous pouvez tout résoudre en lisant JavaDoc de JavaCord.

finalement

Discord 4j ou JDA doit être utilisé pour les opérations vocales et plus avancées JavaCord est probablement en cours de développement et ne sera pas mis à jour à l'avenir

Alors pourquoi l'avez-vous utilisé! C'est juste que l'API était facile à utiliser. C'est un article fin, mais merci d'avoir lu

référence

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

Postscript

Au 21 juillet 2020 Le domaine de l'API Discord a changé récemment.Je ne suis pas sûr que cette bibliothèque ne puisse pas être utilisée.Je pense que vous pouvez la retirer de discord4j

Recommended Posts

Création de Java Discord Bot
création de fichier java
création de répertoire java
Comment créer un robot Discord (Java)
Eclipse ~ Création de projet Java ~
[Java] Création d'un programme de calcul 1
Créer un multi-projet Java avec Gradle
Création de l'environnement de développement Play Framework 2.6 (Java)
Code de création de chaîne arbitraire par Java
Java
Java
Facile à créer Slack Bot avec Java
[Amélioration] Apprenez Java grâce à la création d'outils simples