Discord Bot(JS)无法识别移动内容

时间:2020-07-08 18:39:04

标签: javascript discord discord.js

我使用discord.js构建的机器人有一个小问题。如果用户使用的是桌面版本的Discord,但不能在移动设备上运行,则以下代码可以正常工作:

if (message.content.includes('<@!700150870041690192>')) {
        var authorId = message.author.id;
        var mentionString = '<@!'+authorId+'>';
        var role = message.guild.roles.find(role => role.name === "Naughty Seat");
        message.member.addRole(role);
        message.channel.send(mentionString+', enjoy your naughty seat.');

基本上,如果提到了机器人,那么您将扮演一个角色。我相信这可能与移动标记的工作方式有关,但我不确定。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

message对象的属性mentions包含一个MessageMentions对象,该对象包含消息中提到的所有成员和用户。尝试使用它而不是手动解析文本。

要获得Collection个提及的成员:

message.mentions.members

此外,您正在代码中手动构建提及。您不需要它,因为您可以通过自动将用户与字符串连接来提及用户:

message.channel.send("Hello, " + message.author);

答案 1 :(得分:1)

由于某些原因,移动设备上的用户提及在用户ID之前没有感叹号。
您可以通过使用正则表达式将if语句替换为该语句来修复代码:

if (/<@!700150870041690192>|<@700150870041690192>/.test(message.content)) {
    // Your code
}