【问题标题】:Java Discord4j how to send message to channel REST API?Java Discord4j如何将消息发送到通道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() 并且它可以工作。问题可以结束了。

标签: java discord discord4j


【解决方案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();

【讨论】:

    猜你喜欢
    • 2019-02-03
    • 2022-01-12
    • 2019-01-14
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多