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

Discord.js中替代SlashCommandBuilder实现隐藏工具命令方案问询

解决方案

你完全不需要用SlashCommandBuilder或者任何Discord.js提供的命令构建类,因为这类工具函数根本不需要注册为命令。直接去掉data导出,或者把data改成一个简单的标识对象就行——只要你的部署脚本不会识别它为需要注册的斜杠命令即可。

两种可行方案:

方案1:移除不必要的data导出

既然这个文件只处理按钮交互,根本不需要命令元数据,直接删掉data相关代码:

import { ButtonInteraction } from 'discord.js';

export async function execute(interaction: ButtonInteraction) {
    await interaction.reply({
        content: 'Hello ' + interaction.user.displayName,
        ephemeral: true,
    });
}

方案2:用自定义标识对象替代(如果你的事件处理器需要名称标识)

如果你的事件处理器需要通过名称匹配这个工具函数,可以自己定义一个简单的对象,完全不用依赖SlashCommandBuilder:

import { ButtonInteraction } from 'discord.js';

// 自定义元数据,仅用于内部标识,不会被注册为斜杠命令
export const data = {
    name: 'mywl',
    description: 'Utility file for wishlist button'
};

export async function execute(interaction: ButtonInteraction) {
    await interaction.reply({
        content: 'Hello ' + interaction.user.displayName,
        ephemeral: true,
    });
}

核心逻辑:只有需要注册为用户可调用的斜杠命令时,才需要用SlashCommandBuilder生成符合Discord要求的命令元数据。这类仅内部调用的工具函数,不需要任何Discord命令构建类,只要能让你的事件处理器找到并调用execute函数就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:52:09