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

discord.js v12.5.3使用slash commands时Guild.commands未定义如何解决

问题根源

discord.js 12.5.3版本核心库未原生内置斜杠命令相关实现,Guild对象本身不存在commands属性,是触发该报错的直接原因。斜杠命令相关API是discord.js v13及以上版本才默认集成到核心库的功能。

解决方案

方案1:升级discord.js到v13及以上版本(更推荐)

该方案长期维护成本最低,升级后你现有guild.commands.set()的注册逻辑基本可以直接复用,仅需要做两处适配:

  • 初始化client时开启GUILDS等必要的网关意图
  • 命令参数type字段替换为官方提供的枚举值,不再使用字符串"STRING"

方案2:v12版本直接调用Discord开放API注册命令

如果暂时无法升级版本,可以直接调用Discord原始HTTP接口完成服务器命令注册,替换你原有await guild.commands.set(commands)代码即可:

// 替换原 await guild.commands.set(commands) 行
await client.api.applications(client.user.id).guilds(guild.id).commands.put({
    data: commands
})

注意v12版本使用该接口需要在初始化client时补充配置{ restSweepInterval: 0, restTimeOffset: 500 },保证REST请求可以正常发送。

额外代码修复提示

你现有代码中参数必填性判断逻辑存在错误,正常参数格式为<必填参数>、[可选参数],修正后的处理逻辑参考:

options: optionsArr.map((option) => {
    let required = option.startsWith("<");
    return {
        name: option.slice(1,-1),
        type: "STRING",
        description: option.slice(1,-1),
        required,
    };
}),

内容的提问来源于stack exchange,提问作者shestakov-dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:30:01