discord - 当您不提及时,机器人崩溃了
问题描述
我的机器人上有这个命令,您可以使用命令 g!mute 将某人静音,其中使用 @ 提到“用户”。但是,如果您不提及例如 GeoGeo 而不是 @GeoGeo,则会导致机器人崩溃。我知道你需要把 .catch(console.error); 某处,但我不确定在哪里。提前致谢。错误是
let person = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[1]))
^
TypeError: message.guild.members.get is not a function
代码:
const Discord = require('discord.js');
const ms = require('ms');
module.exports = {
name: 'mute',
description: "this is mute command",
execute(message, args){
if(!message.member.roles.cache.find(r => r.name ==="Staff", "Head Staff", "Owner", "Co-Owner")) return message.channel.send(`YOU DO NOT HAVE PERMISSION TO DO THAT`)
let members = args[0];
if(!members) return message.reply("g!mute <user> <time>")
let person = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[1]))
if(!person) return message.reply("That person is not in the server!");
let mainrole = message.guild.roles.cache.find(role => role.name === "Fans");
let muterole = message.guild.roles.cache.find(role => role.name === "muted");
if(!muterole) return message.reply("That role does not exist");
let time = args[1];
if(!time){
return message.reply("g!mute <user> <time>");
}
person.roles.remove(mainrole.id);
person.roles.add(muterole.id);
const embed = new Discord.MessageEmbed()
.setTitle ("Muted:")
.setDescription (`${person.user.tag} has now been muted for ${ms(ms(time))}`)
.setColor(0x01B8FF)
message.channel.send(embed);
setTimeout(function(){
person.roles.add(mainrole.id)
person.roles.remove(muterole.id)
const embed = new Discord.MessageEmbed()
.setTitle ("Muted:")
.setDescription (`${person.user.tag} has been unmuted`)
.setColor(0x01B8FF)
message.channel.send(embed);
}, ms(time));
}
}
解决方案
当遇到如下错误时:TypeError: message.guild.members.get is not a function
合乎逻辑的做法是检查文档以查看message.guild.members
确实有一个名为get
. 这是文档:https ://discord.js.org/#docs/main/stable/class/GuildMemberManager
没有get
。但是cache
你在代码的其他地方使用了一个类似的东西。只需检查文档,您就可以知道您现有的代码是错误的(它已经过时了),您需要cache
像在代码中的其他地方一样使用:
message.guild.members.cache.get(args[1])