You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js创建静音角色命令执行报错:ReferenceError: guild未定义

错误原因
  • 核心报错是guild变量未定义,你没有从消息上下文获取当前服务器实例,discord.js 中需要通过message.guild拿到当前消息所属的服务器对象
  • 你给静音角色配置的权限逻辑错误,SEND_MESSAGES是允许发送消息,和静音角色的需求完全相反
  • roles.create是异步接口,你没有等待执行完成就调用role变量,会触发第二个未定义报错
  • 配置项里的discription是拼写错误,正确写法是description
修复后代码
const Discord = require("discord.js")

module.exports = {
    name: 'muterolecreate',
    usage: '%muterolecreate',
    description: "创建静音角色",
    // 函数加async标记支持异步等待
    async execute(client, message, args) {
        // 定义guild变量,从消息对象取当前服务器
        const guild = message.guild;
        // 等待角色创建完成后拿到返回的role对象
        const role = await guild.roles.create({
            data: {
              name: 'muted',
              color: 'RED',
              // 仅保留查看频道权限,移除发送消息权限
              permissions: ["VIEW_CHANNELS"]
            },
          })
        message.channel.send(`${role} 已创建完成`)
    }
}
后续适配说明
  • 以上代码适用于discord.js v13及更低版本,如果使用v14及以上版本,需要将权限字符串替换为PermissionFlagsBits.ViewChannel枚举值
  • 角色创建完成后还需要遍历服务器所有文本/语音频道,给muted角色设置权限覆写,禁止发送消息、连麦、发反应等操作,否则静音角色不会生效
  • 机器人账号和执行命令的用户都需要持有管理角色权限,否则会触发权限不足报错

内容的提问来源于stack exchange,提问作者cb12438

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 23:15:04