查看消息是否提到@here

See if a message mentions @here

我想看看是否有消息在 Discord 上使用 Java 的 JDA 库提到@here。

我已经可以使用 net.dv8tion.jda.api.entities.Message#mentionsEveryone() 查看消息是否提到了@everyone,但是我如何查看消息是否也提到了@here?

我一直在研究 Message#getMentions(Message.MentionType...),但我不确定如何正确使用它,因为它 returns 类型 IMentionable

我从来没有用过这个 API,但是 JavaDoc for IMentionable 显示有一个名为 getAsMention

的方法
@Nonnull String getAsMention()

Retrieve a Mention for this Entity. For the public Role (@everyone), 
this will return the literal string "@everyone".

所以看来您需要做的就是遍历您的 IMentionable 实例并检查其中一个是否是 "@here"

您只需检查 message.mentionsEveryone() && message.getContentRaw().contains("@here")mentionsEveryone() 方法检查它是否是每个人都提到的,@here 算作一个,因为它确实提到了当时在线的每个人。要查看它是 @here 还是 @everyone,您只需分别对每种类型使用 contains("...") 检查消息内容中的文字 @here@everyone