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

Discord自定义Slash命令异常:三命令仅两个显示求助

解决Discord Slash命令不显示的问题

针对你遇到的三个Slash命令中rules无法显示的情况,按以下步骤排查修复:

1. 确认命令已提交到Discord API

你的main.js只实现了命令的本地加载,但没有将命令数据注册到Discord的API——这是Slash命令能在客户端显示的必要步骤。

在client.on('ready')事件中添加注册代码:

client.on('ready', async () => {
    // 注册全局命令(全平台生效,需等待约1小时同步缓存)
    await client.application.commands.set(client.commands.map(cmd => cmd.data));

    // 若仅需在特定服务器生效,改用以下代码(立即同步)
    // const targetGuild = client.guilds.cache.get('你的服务器ID');
    // await targetGuild.commands.set(client.commands.map(cmd => cmd.data));

    console.log(`机器人已登录:${client.user.tag}`);
});

添加后重启机器人,确保rules命令的data被提交到Discord。

2. 修复命令文件的语法问题

对比你提供的代码,yt和rules命令的execute方法存在缩进错误,导致它不属于module.exports的对象属性(虽然yt可能侥幸生效,但语法不规范)。修正rules.js的结构:

let { SlashCommandBuilder } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('rules')
        .setDescription('server rules'),
    // 确保execute与data同级,作为对象的直接属性
    async execute(interaction) {
        await interaction.reply('(rules)');
    }
};

注意:对象最后一个属性末尾不要加多余逗号,避免语法解析错误。

3. 检查控制台警告

启动机器人时,查看控制台是否出现[warn] The command at ... is missing a required "data" or "execute" property.的提示。如果有,说明rules.js的结构依然存在问题,需重新检查data和execute是否正确导出。

4. 刷新Discord客户端缓存

Discord客户端可能会缓存旧的命令列表,按Ctrl+R刷新客户端,或退出重新登录、切换服务器后返回,确认rules命令是否显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:10:29