discord.js创建公会角色时报roles属性未定义错误该如何解决?
问题原因
- 事件回调参数顺序&类型错误:你自定义的Event类约定run函数的第一个参数为client实例,后续才是对应Discord事件的触发参数;同时
guildCreate事件触发时传入的事件参数是新加入的公会Guild实例,不存在message参数,你写的(message, client)参数顺序、类型全错。 - 变量大小写不匹配:你导入discord.js时用的变量名是小写
discord,后续代码调用时用的是大写Discord,属于未定义变量。 - Guild对象引用逻辑错误:
Discord是discord.js库的命名空间导出对象,本身没有guild这个全局属性,你要操作的是guildCreate事件触发时传入的当前公会实例,不能从库对象上直接获取。 - 额外错误:
guild.roles.edit的第一个参数需要传入要修改的角色ID,你之前传的是公会ID,就算前面的问题解决了这一步也会报错。
修正代码
const Discord = require("discord.js") const Event = require("../Structures/Events") // 修正参数顺序:第一个是client,第二个是事件返回的guild实例 module.exports = new Event("guildCreate", (client, guild) => { // 直接使用事件传入的guild实例创建角色 guild.roles.create({ // 替换为你的角色配置 name: "自定义角色", hoist: false, mentionable: false, permissions: [] }) })
内容的提问来源于stack exchange,提问作者Zenxya
相关产品推荐
相关产品推荐

