Discord bot - Js Event Listener 发送多条消息
Discord bot - JDAs Event Listener sending mutiple messages
我正在使用 JDA 创建一个 discord 机器人,但我是新手,现在我的机器人正在工作,但它正在发送多条消息,我认为每次我 运行 代码时它都会发送一条消息,我认为这与事件监听器有关,但不确定也不知道如何解决,有人可以帮我解决这个问题吗?谢谢。
这是我的主文件:
package en.devck.dc;
import javax.security.auth.login.LoginException;
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;
import net.dv8tion.jda.api.entities.Activity.ActivityType;
public class devck {
public static JDA jda;
public static String prefix = "*";
// Main method
public static void main(String[] args) throws LoginException {
jda = JDABuilder.createDefault("my token").build();
jda.getPresence().setStatus(OnlineStatus.ONLINE);
Activity act = Activity.of(ActivityType.WATCHING, "Cowboy Bebop");
jda.getPresence().setActivity(act);
Commands cmd = new Commands();
jda.addEventListener(cmd);
}
}
这是我的命令文件:
package en.devck.dc;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
public class Commands extends ListenerAdapter{
public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
String[] args = event.getMessage().getContentRaw().split("\s+");
if(args[0].startsWith(devck.prefix)) {
args[0] = args[0].substring(1);
switch (args[0]) {
case "info":
event.getChannel().sendTyping().queue();
event.getChannel().sendMessage("Hey there! There is a new bot over here").queue();
break;
case "greet":
event.getChannel().sendTyping().queue();
event.getChannel().sendMessage(event.getAuthor().getName()+" is sending greetings to "+args[1]).queue();
break;
default:
event.getChannel().sendTyping().queue();
event.getChannel().sendMessage("I did not understand your command... but I'm learning!").queue();
break;
}
}
}
}
当我输入“*info”时,它会显示如下内容:
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
根据您的 IDE,您可能需要停止 java 应用程序 运行ning。
日食:
顶部栏 -> Debugging/Run 工具 -> 红方块(这可能有一个数字显示有多少实例同时 运行ning)
Intellij:
如何防止多个机器人同时 运行(仅限 Intellij):
- 在您的 运行 选项中禁用“允许多个实例”。
我正在使用 JDA 创建一个 discord 机器人,但我是新手,现在我的机器人正在工作,但它正在发送多条消息,我认为每次我 运行 代码时它都会发送一条消息,我认为这与事件监听器有关,但不确定也不知道如何解决,有人可以帮我解决这个问题吗?谢谢。
这是我的主文件:
package en.devck.dc;
import javax.security.auth.login.LoginException;
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;
import net.dv8tion.jda.api.entities.Activity.ActivityType;
public class devck {
public static JDA jda;
public static String prefix = "*";
// Main method
public static void main(String[] args) throws LoginException {
jda = JDABuilder.createDefault("my token").build();
jda.getPresence().setStatus(OnlineStatus.ONLINE);
Activity act = Activity.of(ActivityType.WATCHING, "Cowboy Bebop");
jda.getPresence().setActivity(act);
Commands cmd = new Commands();
jda.addEventListener(cmd);
}
}
这是我的命令文件:
package en.devck.dc;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
public class Commands extends ListenerAdapter{
public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
String[] args = event.getMessage().getContentRaw().split("\s+");
if(args[0].startsWith(devck.prefix)) {
args[0] = args[0].substring(1);
switch (args[0]) {
case "info":
event.getChannel().sendTyping().queue();
event.getChannel().sendMessage("Hey there! There is a new bot over here").queue();
break;
case "greet":
event.getChannel().sendTyping().queue();
event.getChannel().sendMessage(event.getAuthor().getName()+" is sending greetings to "+args[1]).queue();
break;
default:
event.getChannel().sendTyping().queue();
event.getChannel().sendMessage("I did not understand your command... but I'm learning!").queue();
break;
}
}
}
}
当我输入“*info”时,它会显示如下内容:
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
- “嘿!这里有一个新的机器人”
根据您的 IDE,您可能需要停止 java 应用程序 运行ning。
日食: 顶部栏 -> Debugging/Run 工具 -> 红方块(这可能有一个数字显示有多少实例同时 运行ning)
Intellij:
如何防止多个机器人同时 运行(仅限 Intellij):
- 在您的 运行 选项中禁用“允许多个实例”。