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
相关产品推荐
相关产品推荐

