java - Discord bot - Js 事件监听器发送多条消息

标签 java discord bots chatbot discord-jda

我正在使用 JDA 创建一个不和谐的机器人,但我是一个新手,现在我的机器人正在工作,但它正在发送多条消息,我认为每次运行代码时它都会再发送一条消息,我认为这是关于事件监听器,但不确定也不知道如何解决它,有人可以帮助我吗?谢谢。

这是我的主文件:

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 应用程序。

eclipse : 顶部栏 -> 调试/运行工具 -> 红色方 block (这可能有一个数字显示同时运行的实例数量)

Intellij:

  • Intelij Debugger/Code Run

如何防止多个机器人同时运行(仅限 Intellij):

  • Select runner config
  • Disallow multipl instances
  • 在运行选项中禁用“允许多个实例”。

关于java - Discord bot - Js 事件监听器发送多条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70154180/

相关文章:

javascript - HTML5 + discord.js 事件监听器

php - 交响乐团 : REST web-service for bots and humans - open questions

javascript - 过滤掉广告系统的机器人和蜘蛛。封锁太过分了

python - Discord python bot on_message return 语句中断命令

python - Discord 代码无故多次运行

java - 为什么我的 JLabel 从未被绘制?

java - 在Java中将图像转换为base64字符串

Python discord bot 警告特定的人

java - Android:Notification.DEFAULT_VIBRATE 是否需要振动许可?

java - 更改微调器颜色 Android Studio