首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Discord4J问题:改为在循环中发送消息

Discord4J问题:改为在循环中发送消息
EN

Stack Overflow用户
提问于 2021-09-30 17:34:52
回答 1查看 41关注 0票数 0

下面是我在Discord4J中用于测试命令的代码

代码语言:javascript
复制
gateway.on(MessageCreateEvent.class)
            .map(MessageCreateEvent::getMessage)
            .filter(message -> message.getContent().contains("test"))
            .flatMap(Message::getChannel)
            .flatMap(channel -> channel.createMessage("test!"))
            .subscribe();

但是现在如果你在discord中输入"test“,它会继续发送消息,而不是像我期望的那样只发送一条消息。这里有什么问题?它确实适用于equals()和equalsignorecase(),但对于所有其他字符串检查方法,它会进入循环。

EN

回答 1

Stack Overflow用户

发布于 2021-10-08 13:35:25

这是因为您也会收到与机器人一起发送的所有消息的MessageCreateEvent。因为您的消息是createMessage("test!"),所以您还将收到一条消息,其中getContent()返回"test!"。这显然会产生"test!".contains("test"),但不会产生"test!".equals("test")

这可以通过检查消息作者是否是机器人来防止。

代码语言:javascript
复制
filter(message -> !message.getAuthor().map(User::isBot).orElse(true))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69396617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档