discord.js中如何定义guild?创建角色时报guild未定义错误如何解决
错误解决方案
报错根因
ReferenceError: guild is not defined 报错的核心原因是你调用guild.roles.create()前没有对guild变量做声明和赋值。从你后续代码的message.guild调用可以判断,当前命令是消息触发的场景,服务器对象可以直接通过message.guild获取。
额外隐藏问题
你原有代码还有两个会导致后续报错的逻辑问题:
roles.create是异步方法,你没有等待创建完成就直接查询角色、给成员加角色,大概率会出现查不到刚创建角色的问题- Discord.js v12及以上版本,角色列表需要从
cache属性中查询,直接调用roles.find会抛出方法不存在的错误
修正后代码
// 替换未定义的guild为消息上下文的服务器对象 message.guild.roles.create({ data: { name: 'Boots', color: 'BLUE', }, reason: 'very cool', }) .then(createdRole => { // 直接使用接口返回的已创建角色对象,无需额外查询 return member.roles.add(createdRole); }) .then(() => { message.channel.bulkDelete(1); message.channel.send('Mhm, very cool'); }) .catch(console.error);
内容的提问来源于stack exchange,提问作者boots
相关产品推荐
相关产品推荐

