discord.js 提到命令不是接用户而是接自己

时间:2021-01-28 02:29:24

标签: javascript discord discord.js bots

一段时间后我启动了我的机器人,但由于某种原因,mention 命令不起作用。代码和对命令的响应如下:

client.on('message', message => {
    if (message.content.startsWith('L!bite')) {
        let targetMember = message.mentions.members.first();
        if (!targetMember) return message.reply('you need to tag a user in order to bite them!!');
        // message goes below!
        message.channel.send(`${targetMember.user}, You just got a bitten!`);
        message.channel.send({files:["./nom/"]})
        //let embed = new Discord.RichEmbed()
        //embed.setImage(`https://media1.tenor.com/images/4f5666861516073c1c8015b2af7e2d15/tenor.gif?itemid=14720869`)
        message.channel.send(embed);
    }
});

对 Discord 的回应:(它确实将自己作为用户而不是其他任何人)

·._.•?  ???????????  ?•._.·Today at 1:18 PM
L!bite @·._.•?  ???????????  ?•._.·

._.·?????♡??????·._.BOT Today at 1:18 PM
@·._.•?  ???????????  ?•._.·, you need to tag a user in order to bite them!!

我只是不明白为什么它说我是或其他人不是用户,但它会自动恢复?例如:

·._.•?  ???????????  ?•._.·Today at 1:18 PM
L!bite @._.·?????♡??????·._.

._.·?????♡??????·._.BOT Today at 1:18 PM
@._.·?????♡??????·._., You just got a bitten!
GIF HERE

2 个答案:

答案 0 :(得分:1)

尝试将 message.mentions.members 转换为数组,然后过滤您的机器人! -

const mentions = message.mentions.members.array() // will return members array of GuildMember class

const firstMention = mentions.filter(mention=> !mention.user.id === "BOT_ID")[0]

答案 1 :(得分:0)

或者,您可以在代码中实现一个参数,它可以自动检查消息是否来自机器人。虽然,如果你想让其他机器人自动标记它,这个过程可能不起作用,但我认为这不太可能。 if (message.author.bot) return; 仅供参考,不确定您使用的是哪个版本的 discord.js,但嵌入命名约定已更改。您应该使用 RichEmbed() 而不是 MessageEmbed()。 所以你要实现的地方就在你的第一个 if 条件块之后,就像这样:

if (message.content.startsWith('L!bite')) {
    //the thing that checks if the user who posted was the bot
    if (message.author.bot) return;
    

希望这会有所帮助!