Как получить доступ к данным внутри слушателя событий 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();
    }
}
Другие вопросы по тегам