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

使用配置文件时Discord.js前缀失效问题求助

解决Discord.js前缀无法识别的问题

嘿,我一眼就揪出你代码里的问题啦!

你在判断!ping命令的时候写了这行:

if (message.content === '${prefix}ping') {

这里用了单引号包裹字符串,但模板字符串(就是用${变量名}插入变量的写法)只有在**反引号()**包裹时才会生效。单引号里的${prefix}会被当成普通文本,而不是读取你config.json里配置的!前缀。也就是说,你的代码现在在判断消息内容是不是字面量${prefix}ping,而不是!ping`,自然不会触发回复啦。

修正后的核心代码

把那行改成用反引号包裹的模板字符串就搞定了:

client.on('message', message => {
 if (message.content === `${prefix}ping`) { // 这里替换成反引号
 message.channel.send('Pong.');
 }
 if (message.content === '!test') {
 message.channel.send('Test not found');
 }
});

额外的优化建议

为了让代码更易维护,你可以统一先判断消息是否以设定前缀开头,再提取命令,这样以后改前缀或者加新命令都不用重复调整:

const Discord = require('discord.js');
const { prefix, token } = require('./config.json');
const client = new Discord.Client();

client.on('ready', () => {
 console.log('Ready!');
});

client.on('message', message => {
 // 忽略机器人自己发的消息,避免循环触发
 if (message.author.bot) return;
 // 消息不是设定前缀开头就直接跳过
 if (!message.content.startsWith(prefix)) return;

 // 提取去掉前缀后的命令内容
 const command = message.content.slice(prefix.length).trim();

 if (command === 'ping') {
 message.channel.send('Pong.');
 }
 if (command === 'test') {
 message.channel.send('Test not found');
 }
});

client.login(token);

这样不管你以后怎么修改前缀,所有命令都能自动适配啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:28:09