Это общий бот, который я сделал из просмотра короткого обучающего видео.
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();
Тем не менее, он продолжает давать мне ошибку Array index of bounds. Нужен ли мне цикл? В настоящее время я изучаю основы Java, поэтому объясню, используя //, если вы можете решить эту проблему.
Редактировать: исправил мой индекс с 5 до 4, чтобы он оставался в пределах длины массива. Мой бот на самом деле отвечает, но эта ошибка происходит в консоли 10 раз. Мой бот дважды ответил на один пинг.
[JDA MainWS-ReadThread] ERROR JDA - One of the EventListeners had an uncaught exception
java.lang.ArrayIndexOutOfBoundsException: 5
Редактировать: Бот теперь отвечает случайными ответами. Но у него есть странные интервалы. изображение