Как получить доступ к данным внутри слушателя событий JDA?
Я пытаюсь сделать discordBOT, используя Java и JDA. Я пытался работать с ними в течение нескольких часов, и у меня это не получается. Мой бот должен обрабатывать данные, которые зависят от пользователя. В обработчиках событий JDA вы не можете возвращать никакие типы данных, поскольку они расширяют ListenerAdapter. Я впервые работаю с Eventlisteners, и я уже много гуглил.
0 ответов
Я не уверен, что это то, о чем вы просите, но ваш класс должен быть расширен от ListenerAdapter.
public class yourClass extends ListenerAdapter {
//Your code.
}
Внутри класса вы можете использовать метод, который вам нужен для того, что вы хотите. например
@Override
public void onMessageReceived(MessageReceivedEvent event) {
//Your code again.
}
Если вы хотите передавать данные между двумя классами, вы можете использовать свои собственные методы и просто передать ему событие.
[Method1]
public static void yourMethod(MessageReceivedEvent event) {
//Your code.
}
[Method2]
@Override
public void onMessageReceived(MessageReceivedEvent event) {
yourMethod(event);
}
Создайте ListenerAdapter и свяжите его с экземпляром JDA. Я покажу вам пример кода, чтобы вы могли понять:
/**
* Logs the bot into Discord and sets the event listeners.
*/
public static void launchJDA(String botToken) {
try {
jdaInstance = new JDABuilder(AccountType.BOT).setToken(loadToken()).build().awaitReady();
jdaInstance.addEventListener(new EventsManager());
} catch (Exception e) {
e.printStackTrace();
}
}
public class EventsManager extends ListenerAdapter {
@Override
public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
//Do what you want with the event here, for example replying with the message received:
String msg = event.getMessage().getContentDisplay();
event.getChannel().sendMessage(msg).queue();
}
}