Java Discord4j如何将消息发送到通道REST API?
Posted
技术标签:
【中文标题】Java Discord4j如何将消息发送到通道REST API?【英文标题】:Java Discord4j how to send message to channel REST API? 【发布时间】:2021-09-08 19:22:23 【问题描述】:我尝试向频道发送消息
GatewayDiscordClient gatewayDiscordClient = DiscordClient
.builder("TOKEN")
.build()
.login()
.block();
gatewayDiscordClient.rest().getChannelById(Snowflake.of("ChannelId")).createMessage("p");
但频道不显示历史消息。我该如何解决?
【问题讨论】:
P.s 我应该添加 .block() 并且它可以工作。问题可以结束了。 【参考方案1】:Discord4J 利用“延迟执行”的Reactor 框架。
您必须在发布商上使用.subscribe()
或.block()
(通常为Mono<T>
或Flux<T>
)。
所以,要让您的代码创建消息:
gatewayDiscordClient.rest().getChannelById(Snowflake.of("ChannelId")).createMessage("p").subscribe();
但是,我建议不要使用 RestX
类,除非您不使用网关(在您的问题中,网关正在使用)。 Rest 类通常提供的 D4J 提供的有用抽象较少,旨在供库内部使用或用于网络服务器,而不是连接到网关的机器人。
要在不使用其他类的情况下发送消息,您的代码将如下所示:
client.getChannelById(channelIdHere)
.ofType(MessageChannel.class)
.flatMap(channel -> channel.createMessage("Your content here"))
.subscribe();
【讨论】:
以上是关于Java Discord4j如何将消息发送到通道REST API?的主要内容,如果未能解决你的问题,请参考以下文章
如何将机器人消息发送到一台服务器中的多个通道(阅读正文以获取更多信息)
discord selfbot 将相同的消息发送到不同服务器的不同通道
使用电报机器人 api、python 3 和 JobQueue 将消息发送到通道的方法