Comment créer un robot Discord (Java)

__2020 / 5/19 Addendum __ Ici présente comment créer le dernier Bot.

__ 2019/10/27 Addendum __ Il semble que la bibliothèque Discord 4J gérée sur cette page ait été abandonnée et remplacée par une autre bibliothèque. Par conséquent, il est actuellement très difficile voire impossible de développer un Bot par cette méthode. Merci beaucoup d'avoir lu ceci comme référence lors du développement de Bot. Si j'ai le temps, j'aimerais écrire un article sur la façon de développer avec le nouveau Discord 4J.

Cette fois, je développerai un DiscordBot simple en utilisant la bibliothèque Discord4j publiée sur GitHub.

De plus, pour utiliser Bot, il est nécessaire d'enregistrer l'application auprès de Discord et d'obtenir un jeton, qui est introduit dans l'édition supplémentaire en bas de page.

Acquérir la bibliothèque

Dépôt Maven (citation README)

...
<repositories>
  ...
  <repository> <!-- This repo fixes issues with transitive dependencies -->
    <id>jcenter</id>
    <url>http://jcenter.bintray.com</url>
  </repository>
  <repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
  </repository>
</repositories>
...
<dependencies>
  ...
  <dependency>
    <groupId>com.github.austinv11</groupId>
    <artifactId>Discord4J</artifactId>
    <version>@VERSION@</version>
  </dependency>
</dependencies>
...

Gradle (citation README)

...
repositories {
  ...
  jcenter() //This prevents issues with transitive dependencies
  maven {
    url  "https://jitpack.io"
  }
}
...
dependencies {
  ...
  compile "com.github.austinv11:Discord4J:@VERSION@"
}
...

Pot de bibliothèque

https://austinv11.github.io/Discord4J/downloads.html

Jouez avec la bibliothèque (API)

Connectez-vous à Discord

    public static IDiscordClient login(String token) {
        ClientBuilder clientBuilder = new ClientBuilder();
        clientBuilder.withToken(token);
        return clientBuilder.login();
    }

Gestion des événements

Inscription de l'auditeur

Pour traiter un événement, vous devez d'abord enregistrer un écouteur. Veuillez ajouter le code ci-dessous après vous être connecté. Mettez une instance de la classe utilisée pour l'écouteur dans l'argument.

De plus, cette fois, nous introduirons l'enregistrement des auditeurs à l'aide d'annotations.

client.getDispatcher().registerListener(Object listener);

En traitement

@EventSubscriber
public void onReady(ReadyEvent event) {
    System.out.println("Bot prêt!");
}

@EventSubscriber
public void onMessage(MessageReceivedEvent event) throws RateLimitException, DiscordException, MissingPermissionsException {
    System.out.println(event.getAuthor().getName() + """ + event.getMessage().getContent() + "Je posté.");
}

La méthode onReady sera appelée une fois la connexion terminée et la méthode onMessage sera appelée lorsque le chat sera publié sur le canal.

Vous pouvez récupérer des événements en ajoutant l'annotation EventSubscriber.

Informations pouvant être obtenues à partir de MessageReceivedEvent

message.getAuthor() //Objet IUser de l'utilisateur qui publie
message.getMessage() //Objet IMessage de chat publié
message.getChannel() //Objet IChannel du canal auquel appartient le bit envoyé
//Tel.

Envoyer un message

Il est fourni par la classe IChannel.

IChannel#sendMessage(String);

Échantillon lié à l'acquisition

Obtenir le nom d'utilisateur

IUser#getName()

Obtenir le contenu du message

IMessage#getMessage()

Objet: Créer un robot simple

Comme cet exemple, je voudrais faire un Bot pour répondre s'il est affiché "Bonjour".

import sx.blah.discord.api.ClientBuilder;
import sx.blah.discord.api.IDiscordClient;
import sx.blah.discord.api.events.EventSubscriber;
import sx.blah.discord.handle.impl.events.ReadyEvent;
import sx.blah.discord.handle.impl.events.guild.channel.message.MessageReceivedEvent;
import sx.blah.discord.handle.obj.IChannel;
import sx.blah.discord.handle.obj.IMessage;
import sx.blah.discord.handle.obj.IUser;
import sx.blah.discord.util.DiscordException;
import sx.blah.discord.util.MissingPermissionsException;
import sx.blah.discord.util.RateLimitException;

public class Example {
	
	private static String TOKEN = "TOKEN"; //Jeton Discord Bot
	
	private static IDiscordClient client;
	
	public static void main(String args[]) {
		Example main = new Example();
		
		System.out.println("Bot de démarrage...");
		
		client = new ClientBuilder().withToken(TOKEN).build();
		client.getDispatcher().registerListener(main);
		client.login();
	}
	
	@EventSubscriber
	public void onReady(ReadyEvent event) {
		System.out.println("Bot prêt!");
	}

	@EventSubscriber
	public void onMessage(MessageReceivedEvent event) throws RateLimitException, DiscordException, MissingPermissionsException {
		IMessage message = event.getMessage();
		IUser user = message.getAuthor();
		if (user.isBot()) return;

		IChannel channel = message.getChannel();
		String mes = message.getContent();

		if (mes.contains("Bonjour")) {
			channel.sendMessage("Bonjour," + user.getName() + "San!");
		}
	}

}

Extra: enregistrement d'application et acquisition de jetons

  1. Accédez à https: //discordapp.com/developers/applications/me

  2. Cliquez sur Nouvelle application 1.PNG

  3. Entrez un nom approprié dans NOM DE L'APPLICATION et cliquez sur Créer une application 2.PNG

  4. Notez les jetons dans le cadre rouge (ils seront utilisés plus tard) 3.PNG

  5. Faites défiler un peu pour le trouver et cliquez sur Créer un utilisateur de bot 4.PNG

  6. Après Oui, faites-le!, Cliquez sur cliquez pour révéler et notez le jeton qui apparaît. (Vérifiez également Public Bot) 5.PNG

  7. Remplacez [CLIENT_ID] dans l'URL ci-dessous par l'ID client que vous avez noté à l'étape 4 pour y accéder.

https://discordapp.com/api/oauth2/authorize?client_id=[CLIENT_ID]&permissions=0&scope=bot
  1. Sélectionnez le serveur sur lequel vous souhaitez que le Bot se joigne et cliquez sur le bouton Authentifier. 6.PNG

Recommended Posts

Comment créer un robot Discord (Java)
Comment créer un conteneur Java
Comment créer un tableau Java
Comment créer un résumé de calendrier Java
Java - Comment créer JTable
Comment créer un pilote JDBC
Comment créer un écran de démarrage
Comment créer un plug-in Jenkins
Comment faire un projet Maven
Facile à créer Slack Bot avec Java
[Introduction à Java] Comment écrire un programme Java
Comment faire un diamant révolutionnaire en utilisant Java pour déclaration wwww
Comment faire un pot ombré
Création de Java Discord Bot
Comment afficher une page Web en 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
Comment convertir un contrat de solidité en une classe de contrat Java
Comment créer un JRE léger pour la distribution
Facile à créer LINE BOT avec Java Servlet
[Java] Comment rendre plusieurs boucles for uniques
[Java / kotlin] Kai ・ Comment créer un Discord Bot - Implémentons une commande pour saluer
Comment créer une application avec un mécanisme de plug-in [C # et Java]
Comment créer un environnement Java en seulement 3 secondes
Comment abaisser la version java
Comment désinstaller Java 8 (Mac)
Comment passer d'Eclipse Java à un fichier SQL
Comment utiliser java Facultatif
java: Comment écrire une liste de types génériques [Note]
[Java] Comment sortir de Janken (équivalent à paiza rang A)
Comment faire un test unitaire Java (JUnit & Mockito & PowerMock)
Comment réduire les images Java
Comment rédiger un commentaire java
Comment laisser un commentaire
Comment faire fonctionner JavaScript sur une page spécifique
Comment utiliser la classe Java
Comment créer un URI de données (base64) en Java
[Java] Comment utiliser removeAll ()
[Java] Comment afficher les Wingdings
[Java] Comment obtenir une requête par communication HTTP
J'ai essayé de créer une fonction de connexion avec Java
Comment utiliser Java Map
[Java] Rendez-le constant
[Java] Comment exécuter des tâches régulièrement
Comment définir des constantes Java
[Java] Comment découper une chaîne de caractères caractère par caractère
[Java] Comment effacer un caractère spécifique d'une chaîne de caractères
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Comment convertir un fichier en tableau d'octets en Java
Comment utiliser les variables Java
Comment convertir la base Java
[Rails] Comment faire des graines
Comment faire un cache sans trop réfléchir
Comment faire un MOD pour Slay the Spire