Discord.js v12 Love Affinity命令-无法提及自己

时间:2020-06-18 19:45:18

标签: javascript command discord.js

所以当我使用命令$love @me时遇到麻烦,它仍然“计算”百分比,我希望它返回一条消息,例如“您无法检查自己的恋爱率...”,我该怎么办?去做? 如果您多次使用该命令,也可能在成员之间仍然输出相同的数字,例如:$love @myfriend,输出74%。然后我再次编写命令,并输入相同的百分比。

这是我的代码:

client.on("message", message => {
    if (message.content.startsWith(prefix + "love")) {
        if(!message.mentions.members.first()) return message.channel.send(`Please mention someone to calculate the love percentage`).then(message.react('❌'));
        let args = message.content.slice(prefix.length).split(/ +/)
        let person = message.mentions.members.first(message, args[0]);

        const love = Math.round(Math.random() * 100);
        const loveIndex = Math.floor(love / 10);
        const loveLevel = "?".repeat(loveIndex) + "?".repeat(10 - loveIndex);
        
        let loveEmbed = new Discord.MessageEmbed()
        .setTitle("Love percentage")
        .setDescription(`${message.author} loves ${person} this much: ${love}%\n\n${loveLevel}`)
        message.channel.send(loveEmbed)
    }
})

希望有人可以提供帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

只需添加一个if语句并检查ID

if(person.id === msg.author.id) return msg.channel.send("Can't mention yourself");

所以:

let args = message.content.slice(prefix.length).split(/ +/)
let person = message.mentions.members.first(message, args[0]);
if(person.id === msg.author.id) return msg.channel.send("Can't mention yourself");

虽然有些无关,但是这里的参数没用:

message.mentions.members.first(message, args[0]);

唯一的参数是数量,因此传递message和args [0]没有影响。除非您使用的是根据集合类调整的库