一段时间后我启动了我的机器人,但由于某种原因,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
答案 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;
希望这会有所帮助!