Похоже, вы не совсем поняли проблемы в своем коде.
final Member target = event.getMessage().getMentionedMembers().get(0);
Это вызовет IndexOutOfBoundsException
, если ваше сообщение не содержит упомянутого участника. Потому что в этом случае список getMentionedMembers()
пуст. Нет объекта для доступа. get(0)
ничего не может получить.
Чтобы исправить это, вы должны сначала проверить, является ли список пустым или его длина равна нулю, как уже предлагал Минн. Если это так, вы можете отобразить сообщение о том, что им нужно добавить @ username.
Я полагаю, что очистка вашего кода и его реструктуризация очень поможет. Пожалуйста, наберите go и всегда проверяйте, существуют ли необходимые данные в первую очередь и действительно ли они вам нужны. Некоторые вещи необходимы только в небольшом количестве случаев, вызывать их для каждого сообщения / команды - не лучшая практика.
Например, в настоящий момент ваш бот пытается получить первого упомянутого участника из КАЖДОГО сообщения, которое послал. Это не обязательно, поэтому вам это нужно только в том случае, если это команда kick.
Кстати, SelfMember
- это сам бот. В своем коде вы говорите пользователю, что у него нет разрешения, хотя у бота (и не обязательно у пользователя) оно может отсутствовать, что может сбивать с толку.
Я не видел этого раньше: ваш бот также получает собственные сообщения. Вы можете проверить, является ли автор сообщения вашим / ботом, прежде чем продолжить.
В конце я бы посоветовал вам всегда пытаться понять ответ или совет, который вам дают. Если задать другой вопрос по той же проблеме, это не поможет вам и не проливает хорошего света на вас и вашу попытку учиться.