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();
}
我正在尝试使用 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();
}