如何在JDA事件监听器中访问数据?

时间:2019-02-13 13:51:53

标签: java event-listener discord-jda

我正在尝试使用Java和JDA进行discordBOT。我已经尝试与他们合作了几个小时,但我没有让它起作用。我的机器人程序需要处理取决于用户的数据。在JDA的事件处理程序中,您不能返回任何数据类型,因为它们扩展了ListenerAdapter。这是我第一次与Eventlisteners合作,我已经在Google上搜索了很多。

2 个答案:

答案 0 :(得分:1)

创建一个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();
    }
}

答案 1 :(得分: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);
}