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!
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>
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.
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()
}
OnlineStatus.ONLINE //online
OnlineStatus.OFFLINE //offline
OnlineStatus.IDLE //Weg
OnlineStatus.DO_NOT_DISTURB //Beschäftigt
OnlineStatus.INVISIBLE //Online-Status ausblenden
Activity.watching("name") //Name beobachten
Activity.listening("name") //Name spielen
Activity.streaming("name", "url") //Name liefern
Activity.playing("name") //Name spielen
Dieses Mal werde ich versuchen, den Befehl "Begrüßen Sie die Person, die den Befehl ausgeführt hat" zu implementieren.
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
}
}
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