bots - .addRole 和 .removeRole 不是函数 - Discord Bot Mute Case
问题描述
我已经浏览了 Stack Overflow 上的所有相关主题并尝试了所有内容,但这些代码不起作用:) 所以我正在关注关于如何在 Discord 上使用机器人静音成员的 YouTube 教程,这是错误:
TypeError: person.removeRole is not a function
at Client.<anonymous> (C:\Users\hp\Documents\discordBot\Codes\index.js:39:14)
at Client.emit (events.js:311:20)
at MessageCreateAction.handle (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32) at WebSocketManager.handlePacket (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
at WebSocketShard.onPacket (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
at WebSocketShard.onMessage (C:\Users\hp\Documents\discordBot\Codes\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
at WebSocket.onMessage (C:\Users\hp\Documents\discordBot\Codes\node_modules\ws\lib\event-target.js:120:16)
at WebSocket.emit (events.js:311:20)
at Receiver.receiverOnMessage (C:\Users\hp\Documents\discordBot\Codes\node_modules\ws\lib\websocket.js:801:20)
这是我的代码,如果有必要,其他部分被删除,我可以把它们放在这里。
case "mute":
let person = m.mentions.members.first() || m.guild.members.fetch(args[1]); //m.guild.member(
//console.log(person);
if (!person) return m.reply("I don't know who this is, bro.");
let mainrole = m.guild.roles.cache.find((role) => role.name === "Main");
let muterole = m.guild.roles.cache.find((role) => role.name === "Mute");
if (!muterole) return m.reply("Sorry they simply don't exsit.");
let time = args[2];
console.log(time);
if (!time) return m.reply("That's not a time. How did you even do it?");
person.removeRole(mainrole.id);
person.addRole(muterole.id);
// person.remove("Main");
// person.add("Mute");
m.channel.send(
`@${person.user.tag} has now been mute for ${ms(ms(time))}`
);
setTimeout(() => {
person.addRole(mainRole.id);
person.removeRole(muterole.id); //switching the order and see how that looks like
m.channel.send(`@${person.user.tag} has been unmuted, good job!`);
}, ms(time));
让我想知道ms模块或discord.js的导入是否有问题?请发送帮助!谢谢!
解决方案
从 discord.js v12 开始,您现在需要使用roles.add()
androles.remove()
而不是.addRole()
and .removeRole()
。
推荐阅读
- rust - 使用 rust 为第三列值绘制带有颜色的 2D 地图
- javascript - 单击其中一个贝宝付款选项时如何显示加载程序
- c - 为什么 explain_fwrite 说我的文件标记为非阻塞?
- scala - Intellij idea 中的默认测试覆盖率工具
- python - Tkinter:为什么子帧没有出现在一个帧中,而是出现在另一个帧中?
- json - 追加到key匹配的json
- angular - Angular - 依赖选择下拉列表不刷新列表中的初始数据
- build.gradle - 我如何在没有互联网访问的情况下手动构建 gradle 项目
- javascript - 当处理器仅在备份时终止时,公牛作业不会停止
- pytorch - 通过torch DataLoader加载微型图像网的问题