【问题标题】:How to get my discord bot to generate random response如何让我的不和谐机器人生成随机响应
【发布时间】:2019-06-08 15:49:34
【问题描述】:

这是我通过观看快速教程视频制作的通用机器人。

public class App extends ListenerAdapter
{ 
    public static void main( String[] args ) throws Exception
  {
    JDA jda = new JDABuilder(AccountType.BOT).setToken(reference.token).buildBlocking();
    jda.addEventListener(new App());


    } 
    @Override
    public void onMessageReceived(MessageReceivedEvent evt)
    {

        User objUser = evt.getAuthor();
        MessageChannel obgMsgCh = evt.getChannel();
        Message obgMsg = evt.getMessage();

        //Ping bot
        if (obgMsg.getContentRaw().equalsIgnoreCase(reference.prefix+"ping")||(obgMsg.getContentRaw().contains("angry"))) 
                {


            // Response
             obgMsgCh.sendMessage(objUser.getAsMention()+" HI").queue();
      }  


   }

}

如何让机器人响应数组或数组列表中的字符串?例如。之前我试过做

String [] responses = new String[5];
responses[0] = "HELLO";
responses[1] = "I'M ANGRY";
responses[2] = "STOP DOING THAT";
responses[3] = "DO NOT";
responses[4] = "NO";
Random randNum = new Random();

obgMsgCh.sendMessage(objUser.getAsMention()+responses[(randNum.nextInt(responses.length))]).queue();

但是它一直给我数组索引越界错误。我需要一个for循环吗???我目前正在学习java的基础知识,所以如果你能解决这个问题,请使用//解释。

编辑:将我的索引从 5 更正为 4,使其保持在数组的长度范围内。我的机器人实际上正在响应,但在控制台中发生了 10 次此错误。我的机器人对一个 ping 响应了两次。

[JDA MainWS-ReadThread] ERROR JDA - One of the EventListeners had an uncaught exception
java.lang.ArrayIndexOutOfBoundsException: 5

编辑:机器人现在以随机答案响应。但它有奇怪的间隔。 image

【问题讨论】:

  • 密切关注哪一行引发了异常。你在做String [] responses = new String[5]; 然后responses[5] = "NO";
  • 更正了索引
  • 请在您尝试修改后发布完整代码并显示正在抛出的确切行
  • 顺便说一句,你可以做String[] responses = {"HELLO", "...", ...};

标签: java eclipse random discord


【解决方案1】:

您正在执行 responses[(randNum.nextInt(responses.length))] 其中 responses.length 返回 5,因此 randNum.nextInt(responses.length) 可能返回 5,但在您的数组中(因为它从 0 开始)responses[4] 是最大值!

【讨论】:

    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 2021-06-04
    • 1970-01-01
    • 2021-03-11
    相关资源
    最近更新 更多