这是我通过观看快速教程视频制作的通用机器人。
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();
}
}
}
我如何让机器人在array或arrayList中用字符串响应?例如。早些时候我尝试做
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();
但是,它一直给我Array index out of bounds错误。我需要for循环吗???我目前正在研究Java的基础知识,因此如果可以解决,请使用//进行解释。
编辑:将我的索引从5校正为4,因此它保持在数组长度之内。我的机器人实际上正在响应,但是在控制台中发生了10次此错误。我的漫游器对一次Ping响应了两次。
[JDA MainWS-ReadThread] ERROR JDA - One of the EventListeners had an uncaught exception
java.lang.ArrayIndexOutOfBoundsException: 5
编辑:Bot现在使用随机答案进行响应。但是它的间隔很奇怪。 image
答案 0 :(得分:0)
您正在做responses[(randNum.nextInt(responses.length))]
,其中responses.length
返回5,所以randNum.nextInt(responses.length)
可能返回5,但是在您的数组中(因为它从0开始)responses[4]
是最大值!