Discord JDA Bot 无限发送消息

Discord JDA Bot sending messages infinitely

我正在尝试使用 Discord JDA API 发送消息,但是每当我发送一条消息时,它都会无限发送。

JDA 版本:4.2.1_255

我尝试过的:

研究问题 使用 GuildMessageReceivedEvent 而不是 MessageReceivedEvent

伪代码:

Guild server = e.getGuild();
    Role role = server.getRolesByName("Java", false).get(0);
    System.out.println(role);
    for(Member members : server.getMembers()) {
        if(members.getRoles().contains(role)) {
            sendPrivateMessage(members.getUser(), "Hello <@!" + members.getId() + ">"); // Sends infinitely
        }
    }

sendPrivateMessage():

public void sendPrivateMessage(User user, String content) {
    user.openPrivateChannel()
            .flatMap(channel -> channel.sendMessage(content))
            .queue();
}

如果此代码在 MessageReceivedEvent 中执行,您可以尝试添加

if(event.getAuthor().isBot()){
return;
}

这样它就不会自行回复(如果您还没有回复的话)。 (如果你想让它回答其他机器人,你也可以使用 JDA,获取 selfUser 并检查这个事件是否自己执行) 如果情况并非如此,也许您可​​以告诉我们更多有关执行时间的信息。

你可以试试这个

public void sendPrivateMessage(User user, String content) {
    if (user.isBot()) return;

    user.openPrivateChannel()
        .flatMap(channel -> channel.sendMessage(content))
        .queue();
}