【问题标题】:How do I access Data inside a JDA event Listener?如何访问 JDA 事件侦听器中的数据?
【发布时间】:2019-07-07 09:10:13
【问题描述】:

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

【问题讨论】:

  • 我不明白你的问题。你想从事件方法返回什么?您的意思是发送消息吗?

标签: java event-listener discord-jda


【解决方案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();
    }
}

【讨论】:

    【解决方案2】:

    我不确定这是否是您要求的,但您的类需要从 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);
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 2020-12-23
      • 2018-09-04
      相关资源
      最近更新 更多