所以这是代码:const mutedRole = message.guild.roles.cache.find(role => role.name === "Muted"); if (!mutedUser) return message.channel.send() if (!message.author) return; if (!mutedRole) { message.guild.roles.create({ data: { name: 'Muted', color: '#6C877C', permissions: ["CREATE_INSTANT_INVITE", "VIEW_CHANNEL"], }, }) .catch(console.error); } mutedUser.roles.add(mutedRole).catch(console.error);正如在代码中看到的那样,我添加了机器人将在角色不可用时扮演角色的部分。但是,它仍然认为该角色从未存在过。在复制之前,我还写了这样的代码: if (!mutedRole) { guild.roles.create({ data: { name: 'Muted', color: '#6C877C', permissions: ["CREATE_INSTANT_INVITE", "VIEW_CHANNEL"], }, }) .catch(console.error); }结果还是一样。我还将机器人的角色放在我的测试服务器上所有角色的最顶层列表中。谁能找出原因?我目前正在使用 discord.js v12 和稳定版本的节点。注意:完整代码在这里:https ://github.com/centralomd/breadbot/blob/master/commands/mute.js
1 回答

RISEBY
TA贡献1856条经验 获得超5个赞
错误来自第 14 行:
const mutedUser = message.mentions.users.first() || message.guild.members.get(args[0])
如果集合中没有提及,则message.mentions.users
您正在尝试获取GuildMember
using message.guild.members.get()
。
Discord JS v12 引入了管理器的概念,您将无法再直接使用 Collection 方法,例如在 和Collection.get()
等数据结构Client.users
上Guild.members
。
你必须改变它:
const mutedUser = message.mentions.users.first() || message.guild.members.cache.get(args[0]) if (!mutedUser) return message.channel.send("Invalid user.");
注意:message.mentions.users
也会获得其他公会的用户。我建议你使用message.mentions.members
.
添加回答
举报
0/150
提交
取消