You need to enable JavaScript to run this app. 使用discord.js开发Discord机器人仅ping命令被识别该如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用discord.js开发Discord机器人仅ping命令被识别该如何解决

问题根因

你目前仅在代码中实现了指令的响应逻辑,没有主动向Discord平台注册beep、server、user-info这几个斜杠指令,只有最早的ping指令你之前完成过注册,所以只有它出现在命令列表中。斜杠指令的注册和响应逻辑是完全分离的两个步骤,修改本地响应代码不会自动同步指令列表到Discord服务器,这也是为什么ping指令还保留着你最初设置的描述。

解决方案

你可以先使用单服务器注册的方式完成测试,单服务器指令注册完成后即时生效,远快于需要1小时同步时间的全局注册:

  1. 临时在你的ready事件中加入如下注册代码,仅执行一次完成注册后就可以注释掉这段代码,高频重复注册会触发Discord速率限制
client.once('ready', async () => {
    console.log('Ready!');
    // 替换为你的测试服务器ID
    const TEST_GUILD_ID = '你的测试服务器ID';
    const targetGuild = client.guilds.cache.get(TEST_GUILD_ID);
    // 批量注册服务器斜杠指令
    await targetGuild.commands.set([
        {
            name: 'ping',
            description: '测试机器人响应延迟'
        },
        {
            name: 'beep',
            description: '触发机器人回复Boop'
        },
        {
            name: 'server',
            description: '查询当前服务器基础信息'
        },
        {
            name: 'user-info',
            description: '查询你的账号基础信息'
        }
    ]);
    console.log('指令注册完成');
});
  1. 启动机器人运行一次,看到控制台输出指令注册完成后就可以注释掉这段代码
  2. 刷新Discord页面即可看到所有注册成功的指令

补充说明

  • 如果你需要让指令在所有添加了机器人的服务器生效,把上述代码中的targetGuild.commands.set替换为client.application.commands.set即可,全局指令注册后最多需要等待1小时完成全量同步
  • 邀请机器人进服务器时要确保勾选了applications.commands权限,否则注册的指令无法正常加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 03:12:04