我正在使用discord.jsV12.2.0+库创建一个discord bot。我正在创建一个!奴役命令,让机器人每2秒ping目标人一次60次。例如,!enslave@hello123
让机器人发送“torturing@hello123:evil:”垃圾邮件,但如果我执行!enslave35203573250237
并发送“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.");
};
使用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])