gpt4 book ai didi

java - JDA 向私有(private) channel 发送通知

转载 作者:行者123 更新时间:2023-11-30 01:51:43 25 4
gpt4 key购买 nike

我希望能够向组中所有用户的私有(private) channel 发送通知这是我的代码

public static void main(String[] args) throws LoginException {          
final JDA bot =
new JDABuilder(AccountType.BOT)
.setToken("secret")
.addEventListener(new DemoApplication())
.build();
}

@Override
public void onPrivateMessageReceived(final PrivateMessageReceivedEvent event) {
if (event.getAuthor().isBot()) {
return;
}
event.getJDA().getGuilds().get(0).getMembers().forEach(user->user.getUser().openPrivateChannel().queue());
event.getJDA().getPrivateChannels().forEach(privateChannel -> privateChannel.sendMessage("ZDAROVA").queue());
}

但只有该私有(private)消息的发送者才能收到消息。我错过了什么 ?我使用版本 3.8.3_462

的 JDA

最佳答案

您的代码使用了异步操作。异步任务是在另一个线程上启动并可能稍后发生的任务。

Discord 有速率限制,操作客户端必须遵守这些限制。由于这个原因以及 HTTP 请求需要一些时间的原因,请求在后台发生。您正在使用的方法称为 queue()只需将请求放入由工作线程耗尽的队列中即可。

openPrivateChannel()返回RestAction<PrivateChannel>这意味着它将收到一个私有(private) channel 实例作为响应。可以使用 queue(Consumer<PrivateChannel> callback) 的回调参数与此响应进行交互。 .

static void sendMessage(User user, String content) {
user.openPrivateChannel().queue(channel -> { // this is a lambda expression
// the channel is the successful response
channel.sendMessage(content).queue();
});
}

guild.getMembers().stream()
.map(Member::getUser)
.forEach(user -> sendMessage(user, "ZDAROVA"));

有关RestAction的更多信息可在 JDA Wiki 中找到和 Documentation .

关于java - JDA 向私有(private) channel 发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55761363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com