我正在尝试使用 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();
}
答案 0 :(得分:0)
如果此代码在 MessageReceivedEvent 中执行,您可以尝试添加
if(event.getAuthor().isBot()){
return;
}
这样它就不会在您尚未回复时自行回复。 (如果您希望它回答其他机器人,您也可以使用 JDA,获取 selfUser 并检查此事件是否自行执行) 如果不是这样,也许您可以告诉我们更多有关它何时执行的信息。
答案 1 :(得分:0)
你可以试试这个
public void sendPrivateMessage(User user, String content) {
if (user.isBot()) return;
user.openPrivateChannel()
.flatMap(channel -> channel.sendMessage(content))
.queue();
}