gpt4 book ai didi

javascript - addRole 不是函数

转载 作者:行者123 更新时间:2023-11-29 23:12:30 25 4
gpt4 key购买 nike

我正在创建一个 Discord 机器人。我正在尝试创建一个静音命令,但我总是遇到同样的错误。

enter image description here

出了什么问题?

背景资料:

  • Discord.js 版本: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 Documentation

请注意,addRole 是 Methods 下的第一项。

现在,切换到 master(又名 Development 分支——你从那里获得 12.0.0-dev)... https://discord.js.org/#/docs/main/master/class/GuildMember

Documentation

addRole 不再存在。

点击 Angular 色的类型... https://discord.js.org/#/docs/main/master/class/GuildMemberRoleStore Documentationadd 是第一个方法。

您可以将 MuteUser.addRole 替换为 MuteUser.roles.add

注意:这不会使我在评论中的任何文字无效,因为您没有在问题本身中提供足够的信息来说明抛出错误时 MuteUser 是什么类型。

注意 2:这只用了一次谷歌搜索。您甚至在研究上投入了多少工作?

关于javascript - addRole 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53580392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com