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

discord.js开发的Discord机器人响应所有前缀,无法限定$前缀,如何解决?

问题根源
  • 没有对消息做前缀匹配校验:你的代码直接对所有消息执行substring(PREFIX.length)切割首个字符,只要切割后的第一个分段是ping就会触发响应,不管消息开头的字符是不是你设定的$。比如发送xping时,切割首个字符x后剩下的内容是ping,自然就会触发pong回复。
  • 缺少机器人消息过滤逻辑:没有排除机器人自身发送的消息,存在触发循环响应的潜在风险。
修复代码

你只需要在消息事件的开头新增校验逻辑即可,修正后的对应代码段如下:

client.on('message', message => {
    // 新增:过滤机器人消息 + 过滤不带指定前缀的消息
    if (message.author.bot || !message.content.startsWith(PREFIX)) return;

    const args = message.content.substring(PREFIX.length).split(" ");

    switch (args[0]) {
        case 'ping':
            message.channel.send('pong!');
            break;
    }
});

注:如果你使用的是discord.js v14及以上版本,message事件已经正式废弃,需要将事件名替换为messageCreate才能正常触发回调。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:54:04