如何创建带随机回复的Discord Slash Command?命令无响应排查
解决Discord斜杠命令无响应问题
你的代码逻辑本身没问题,但调用无响应通常是注册、权限或错误捕获的问题,按以下步骤排查:
1. 确认命令已正确注册
- 检查Bot启动时的命令加载逻辑,确保
dé命令被包含在注册列表中。 - 全局命令同步可能需要1小时,测试阶段优先用服务器专属命令,同步速度仅需几分钟。
2. 检查Bot权限
- 确保Bot在目标服务器拥有
发送消息和嵌入链接权限,否则无法发送带Embed的回复。 - 确认调用命令的频道没有限制Bot发言的权限设置。
3. 添加错误捕获逻辑
你的异步执行函数没有错误捕获,可能悄悄报错却无输出。修改代码加入错误处理,方便定位问题:
execute: async (interaction) => { try { const liste = [ "`1, tu as fait une réussite critique`", "`2, tu as fait une réussite moyenne`", "`3, tu as fait une réussite moyenne`", "`4, tu as fait une petite réussite`", "`5, tu as fait un petit échec`", "`6, tu as fait un echec critique`", "`7, quelque chose de drôle va arriver`", "`8, ça provoque l'effet d'un autre sort`", ]; await interaction.reply({ embeds: [new EmbedBuilder().setDescription(liste[Math.floor(Math.random() * liste.length)])], }); } catch (error) { console.error("命令执行出错:", error); // 根据交互状态发送错误提示 if (interaction.replied || interaction.deferred) { await interaction.followUp({ content: "命令执行失败,请联系管理员", ephemeral: true }); } else { await interaction.reply({ content: "命令执行失败,请联系管理员", ephemeral: true }); } } },
4. 处理交互超时
Discord要求交互必须在3秒内回复,若后续添加异步操作,需先调用await interaction.deferReply(),再用interaction.editReply()更新内容,避免超时无响应。
5. 测试特殊字符命令名
命令名dé带重音符号,可能存在客户端识别问题,可临时换成de测试是否是字符编码导致的无响应。
内容的提问来源于stack exchange,提问作者math
相关产品推荐
相关产品推荐

