所以我正在制作一个机器人,它的目的是通过键入标记已报告的用户。不合适的@discordUser
。
这是示例:
if(message.getMessageContent().equalsIgnoreCase(main.prefix + "inappropriate"))
{
message.getChannel().sendMessage("username of <@!USER_ID> is inappropriate.");
}
但是,问题是它不是指定的用户。换句话说,它不会总是同一个用户。
所以这就是它在《不和谐》中的样子:
我:。不恰当@discordUser
Bot:@discordUser的用户名不合适。
所以,我想知道,我怎样才能使这成为可能?
您没有说出您使用的是哪个不和谐包装器,但从getMessageContent()中,它似乎是Javacord。如果不是,请注意,我将说的所有内容在其他包装器中都是相同的/具有等效的。
要获取提到的成员,您可以使用方法Message#getMentionedUser()返回消息中提到的用户的列表。这意味着您甚至可以获得多个用户。要获取id,您可以使用User#getId()或User#getIdAsString(),或者您可以尝试解析Message#getMessageContent(),例如拆分它,然后使用正则表达式(记住提及是
如何从用户或id中获得提及?从用户那里,您可以简单地使用方法User#getMentionTag()或User#getNicknameMentionTag()。从id中,您可以附加“
所以简而言之,你可以这样做:
消息→成员(方法)→提及(方法)
消息→id(手动解析)→提及(手动追加)
消息→成员(方法)→id(getter方法)→提及(方法)
最后一个可能看起来没用,但是在你存储id的情况下(你不能存储实体),它可能很有用。此外,你可以从id中检索成员,但是与需要意图的其他成员相比,它在这里是无用的,实际上你可以简单地做第一个解决方案,它只是两个方法调用。
我给了你几种方法来做到这一点,其中一些是手动的,其他的使用现有的方法。你应该更喜欢使用这些方法,除非它对你不方便(即你想要自己的命令解析器,所以你不能使用getMentionedUser())。
另外,你可以查看每个类的方法,你可能会找到金子,文档可以在你的ide中找到,或者在这里通过搜索栏在线找到。我知道包装器JDA,但是在我回答你的问题之前,我对Javacord一无所知。这是我的第一个答案,我希望我没有搞砸什么。