discord.js机器人不会提及用户

时间:2020-05-21 17:13:01

标签: javascript bots discord discord.js

我正在使用discord.js v12.2.0 +库创建一个discord机器人。我创建了一个!enslave 命令,该命令使机器人每2秒对目标人执行一次ping操作60次。因此,例如,!enslave @Hello123使该漫游器向此垃圾邮件发送“ Torturing @ Hello123:evil:”垃圾邮件,但如果我这样做!enslave 35203573250237,则该漫游器不会发送垃圾邮件,并发送“ Torturing undefined:evil:”。长号是不和谐用户的ID。

这是我的 enslave.js 代码:

module.exports = {
    run: async(client, message, args) => {
        if(!message.member.hasPermission('ADMINISTRATOR')) {
            message.channel.send("You don't have permission to use that command.");
        }
        else {
            try {
                let counter = 0;
                message.delete()
                let user = message.mentions.members.first() || await message.guild.members.fetch(args[0])
                console.log(args[0])
                let i = setInterval(function(){
                    const bot = client.emojis.cache.get('712787936734609419');
                    message.channel.send(`Torturing ${user} ${bot}`);
                    counter++;
                    if(counter === 60) {
                        clearInterval(i);
                    }
                }, 2000);
            }
            catch(err) {
                console.log(err);
            }
        }
    },
    aliases: [],
    description: 'Make ImmortusMC torture someone'
}

这是我的 message.js 代码:

const PREFIX = process.env.PREFIX;
module.exports = (client, message) => {
    if(message.author.bot) return;
    if(!message.content.startsWith(PREFIX)) return;
    let cmdName = message.content.substring(message.content.indexOf(PREFIX)+1).split(new RegExp(/\s+/)).shift();
    let argsToParse = message.content.substring(message.content.indexOf(' ')+1);
    if(client.commands.get(cmdName))
        client.commands.get(cmdName)(client, message, argsToParse);
    else
        console.log("Command does not exist.");
};

enter image description here

2 个答案:

答案 0 :(得分:0)

使用message.guild.members.fetch(args[0])代替message.guild.members.cache.get(args[0])

获得undefined的原因是该成员尚未被缓存,因此您无法使用members缓存来获取它们。

let user = message.mentions.members.first() || await message.guild.members.fetch(args[0])

答案 1 :(得分:0)

对不起,我回答迟了,但是ry:

let user = message.mentions.members.first() || message.guild.members.cache.get(args[0]);

在使用ID时,应使用.get()。我还删除了await,并在末尾添加了;