首页 > 解决方案 > Discord Js Bot 提及用户 ID

问题描述

我正在制作一个机器人,我想补充一点,如果有人在那条消息中提到我,那么机器人应该回复一些我尝试过很多事情但总是失败的东西,就像我尝试过的一样

if (message.content.includes("<@737177406376509520>")){
   message.channel.send('nice')
}

但这不起作用,那是我的用户 ID 帮助我判断是否有人在消息中提到我,然后机器人应该回复

message.mentions.members.first()

这也是我尝试过的,但我认为它只会首先提到所以帮助我把它拿出来

如果有人提到机器人,我想要类似的东西然后它发送这个

if (message.mentions.has(client.user.id)){
message.channel.send("Hello there! I am xD Bot");
}

帮我告诉如果有人在消息中提到我,那么机器人应该回复一些东西

标签: javascriptnode.jsdiscorddiscord.js

解决方案


message.mentions.members是消息内容中所有提到的成员的集合(映射)。当您使用 时message.mentions.members.first(),您只会得到第一次提及。要检查是否在消息中的哪个位置提到了成员,您需要将整个集合放在一个变量中,如下所示:

const mentionedMembersCollection = message.mentions.members;

然后,在事件if内部的条件中使用它message来检查是否提到了特定成员,使用他们的id. 成员集合(映射)使用idaskeymember对象 as进行映射value

bot.on('message', (message) => {
    const mentionedMembersCollection = message.mentions.members;
    if(mentionedMembersCollection.has('your-id') || mentionedMembersCollection.has(bot.user.id)) {
        message.channel.send('nice');
    }
});

如果消息中提到了其中一个,则上面的代码将nice在频道中发送。您可以使用他们的.youbotbothid


推荐阅读