我正在创建Discord Bot。
我正在尝试创建一个Mute命令,但是我总是遇到相同的错误。
什么地方出了错?
背景资料:
12.0.0-dev
0.5.0-dev
的Klasa 码:
const { Command } = require('klasa');
const { MessageEmbed } = require('discord.js');
module.exports = class extends Command {
constructor(...args) {
super(...args, { description: 'Mute an user.' })
}
async run(msg, args) {
if(!msg.member.hasPermission("MANAGE_MEMBERS")) return msg.channel.send("You can't use this command.");
let MuteUser = msg.guild.member(msg.mentions.users.first() || msg.guild.members.get(args[0]))
if(!MuteUser) return msg.channel.send("Can't find user!");
let MuteReason = msg.content.split(" ").slice(2).join(" ");
let MuteRole = msg.guild.roles.find(r => r.name === "Spammer");
if(!MuteRole) return msg.channel.send("Can't find the Spammer role!");
let MuteChannel = msg.guild.channels.find(guild => guild.name === 'bot-logs');
if(!MuteChannel) return msg.channel.send("Can't find the #bot-logs channel.");
if(MuteUser.roles.has(MuteRole)) return msg.channel.send("That user is already muted!.");
MuteUser.addRole(MuteRole.id);
return MuteChannel.send(new MessageEmbed()
.setAuthor("Mute"|| 'Unknown', "http://wolfdevelopment.cf/BotSymbols/info.png")
.setColor("#ff0000")
.addField("Muted User", `${MuteUser}`)
.addField("Muted By", `<@${msg.author.id}>`)
.addField("Muted In", `${msg.channel}`)
.addField("Time", `${msg.createdAt}`)
.addField("Reason", `${MuteReason}`));
}
}
我检查了
MuteUser
是这一行的人: if(!MuteUser) return msg.channel.send("Can't find user!");
所以一定是一个人。为什么没有
addRole
函数? 最佳答案
我决定从另一个 Angular 看待这个问题,并在Discord.js文档中搜索了更多信息。果然发现了一些东西:
我假设您对msg.guild.member
的调用将导致生成GuildMember
,因为这就是名称的含义。
稳定(大概是11.x):https://discord.js.org/#/docs/main/stable/class/GuildMember
请注意,addRole
是“方法”下的第一项。
现在,切换到master(又名Development分支-从那里获得12.0.0-dev)...
https://discord.js.org/#/docs/main/master/class/GuildMember
addRole
不再存在。
单击roles
的类型...
https://discord.js.org/#/docs/main/master/class/GuildMemberRoleStore
add
是第一种方法。
您可能可以将MuteUser.addRole
替换为MuteUser.roles.add
。
注意:这不会使我在注释中的任何单词失效,因为您没有在问题本身中提供有关引发错误时MuteUser
是什么类型的足够信息。
注意2:仅进行了一次Google搜索。您什至投入了多少工作?
关于javascript - addRole不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53580392/