EventWaiter不起作用-Java Discord API

时间:2020-10-19 16:41:00

标签: java discord discord-jda

当有人使用下面的这段代码向特定消息添加响应时,我正在尝试创建EventWaiter,但它似乎不起作用。我已经尝试修复可能出错的每件事, 但是什么也没发生。 控制台上没有显示任何错误,似乎eventwaiter没有收听MessageReactionAdd类

private static final String EMOTE = "\uD83D\uDE39";

// send a message to Dm and starts the method
event.replyInDm("message", (message - > {
  message.addReaction("\uD83D\uDD27").queue();
  initWaiter(message.getIdLong(), channel);
}));

private void initWaiter(long messageId, PrivateChannel channel) {
// waiting for a specific reaction (EMOTE) in a message with the same id as the message above
  waiter.waitForEvent(
    MessageReactionAddEvent.class,
    (e) - > {
      MessageReaction.ReactionEmote emote = e.getReactionEmote();
      assert user != null;
      return e.getMessageIdLong() == messageId && EMOTE.equals(emote.getName()) && !emote.isEmote() && !user.isBot();
    },
    (e) - > {
// if the code above is true, this should happen, but it doesn't
      assert channel != null;
      channel.sendMessage("message").queue();
    }
  );

1 个答案:

答案 0 :(得分:0)

确保将EventWaiter作为侦听器添加到JDABuilder中:

JDABuilder.createDefault("token", intents)
          .addEventListeners(..., waiter)
          ...

如果您将服务员注册为侦听器,则假设您正在运行最新版本的jda之一,则可能会缺少必需的DIRECT_MESSAGE_REACTIONS意图。