Discord Bot不响应问题咨询 复制的ping pong命令无报错却无法生效
Discord.js ping斜杠命令无响应修复方案
你当前代码无法触发ping命令响应是以下几个核心原因导致的:
- 仅配置了斜杠命令交互监听逻辑,未提前将
ping命令注册到Discord后台,Discord无法识别/ping指令,自然不会触发交互事件,也不会输出错误日志。 - 代码适配的是discord.js v13版本,若你本地安装的是v14及以上版本,Intent的写法已经废弃,会直接导致逻辑异常。
修复步骤
- 第一步:确认本地discord.js版本
执行命令查看版本:
若为v14及以上版本,将Bot初始化代码替换为:npm list discord.jsconst { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages] }); - 第二步:注册
ping斜杠命令
新建单独的deploy-commands.js文件,填入以下代码,替换对应参数后仅执行一次即可完成单测试服务器的命令注册:
执行命令完成注册:const { REST, Routes } = require('discord.js'); // 替换下方三个参数为你自己的配置 const clientId = '你的Bot客户端ID'; const guildId = '测试服务器ID'; const token = '你的Bot登录Token'; const commands = [ { name: 'ping', description: '测试响应,返回Pong', }, ]; const rest = new REST({ version: '10' }).setToken(token); (async () => { try { console.log('开始注册斜杠命令'); await rest.put( Routes.applicationGuildCommands(clientId, guildId), { body: commands }, ); console.log('斜杠命令注册完成'); } catch (error) { console.error('命令注册失败:', error); } })();node deploy-commands.js - 第三步:确认Bot邀请权限
邀请Bot进服务器时,必须勾选applications.commands权限,否则注册后的命令不会在服务器内显示。 - 可选调试:如果完成上述步骤依然无响应,可以在交互监听逻辑中加日志确认事件触发情况:
client.on('interactionCreate', interaction => { // 新增日志,触发交互时会在控制台输出命令名 console.log('收到交互指令:', interaction.commandName); if (!interaction.isCommand()) return; if (interaction.commandName === 'ping') { interaction.reply('Pong.'); } });
内容的提问来源于stack exchange,提问作者tquigg96
相关产品推荐
相关产品推荐

