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

开发Discord Bot时无法注册Slash Commands的问题求助

Discord.js斜杠命令注册失败排查方案
  • 检查Token与权限

    • 确认使用的是机器人专属Token,而非OAuth2客户端密钥,两者格式不同,不能混用。
    • 重新邀请Bot到服务器时,授权链接必须包含applications.commands权限范围,完整scope参数应为scope=bot%20applications.commands,缺少这个权限会导致命令无法在服务器内显示。
  • 区分全局命令与服务器命令

    • 当前代码注册的是全局命令,Discord对全局命令有1小时左右的缓存延迟,不会即时生效。如果要快速测试,改用服务器命令路由:
      将Routes.applicationCommands(CLIENT_ID)替换为Routes.applicationGuildCommands(CLIENT_ID, GUILD_ID)(需替换GUILD_ID为你的服务器ID,开启Discord开发者模式可复制),服务器命令会立即生效。
  • 代码执行规范

    • 注册命令的脚本应单独运行一次,无需和Bot主逻辑绑定重复执行。每次修改命令后,运行该脚本即可完成更新。
    • 确认Node.js版本≥16.9.0,discord.js v10对Node版本有硬性要求,版本过低可能导致无报错的静默失败。
  • 验证命令结构合法性

    • 命令name必须全小写、无空格,description不能为空,至少包含1个字符,不符合规范的命令会被Discord后台静默拒绝。

测试用代码(服务器命令版本)

import { REST, Routes } from 'discord.js';
const TOKEN = '你的机器人Token';
const CLIENT_ID = '你的客户端ID';
const GUILD_ID = '你的服务器ID';

const commands = [
  {
    name: 'ping',
    description: 'Replies with Pong!',
  },
];

const rest = new REST({ version: '10' }).setToken(TOKEN);

try {
  console.log('开始刷新服务器内的斜杠命令...');

  await rest.put(Routes.applicationGuildCommands(CLIENT_ID, GUILD_ID), { body: commands });

  console.log('服务器斜杠命令刷新成功!');
} catch (error) {
  console.error(error);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:42:09