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

discord.js 运行$dm命令时误触发$help命令发送重复内容问题求助

问题原因

核心问题出在$help命令的分支结构上:
你写的else if (message.content === "$help") {}仅跟了一对空的大括号,后续生成帮助Embed、发送消息的代码完全没有被包含在这个条件分支内,属于全局生效的代码,所以不管触发的是哪一个命令,只要通过了最开头的前缀、机器人消息校验,这段帮助消息的代码都会无条件执行,这就是你调用$dm也会弹出帮助的直接原因。

除此之外代码还存在几处语法不规范问题:

  • ready事件的console.log('Ready!')写在了事件回调函数的外部,启动时不会正常打印
  • message事件开头重复写了两次完全相同的前缀、机器人消息校验逻辑
  • 多处括号配对错误

修正后的完整代码

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

client.once('ready', () => { 
  client.user.setActivity('Use $help for a list of commands!', { type: "PLAYING" }); 
  console.log('Ready!');
});

client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;
    const args = message.content.slice(prefix.length).trim().split(' ');
    const command = args.shift().toLowerCase();
    if (message.content.startsWith(`${prefix}ping`)) {
        message.channel.send('Pong.');
    } else if (message.content.startsWith(`${prefix}beep`)) {
        message.channel.send('Boop.');
    } else if (message.content === `${prefix}server`) {
        message.channel.send(`Server name: ${message.guild.name}\nTotal members: ${message.guild.memberCount}`);
    } else if (message.content === `${prefix}user-info`) {
        message.channel.send(`Your username: ${message.author.username}\nYour ID: ${message.author.id}`);
        console.log(message.content);
    } else if (message.content === (`${prefix}dm`)) {
        message.author.send("string");
    } else if (message.content === "$help") {
        let embed = new MessageEmbed()
        .setTitle("Command List")
        .setDescription("$help, $ping, $beep, $server, $user-info, $dm")
        .setColor("RANDOM")
        message.channel.send(embed)
    }
});

client.login(token)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:00:01