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

JavaScript编写的Discord Bot $joke命令无响应,求修复方案

修复Discord Bot的$joke命令无响应问题

你的代码核心问题是message.reply()的调用参数错误,Discord.js的reply方法不接受你传入的两个独立参数(数字索引和笑话内容),正确的用法是直接传入要发送的文本内容。

修复后的代码:

// 把笑话列表提到外部,避免重复定义
const randomJokelist = ['A','B','C'];

client.on('messageCreate', (message) => {
    if (message.content === '$joke') {
        // 每次触发命令时生成随机索引,确保每次都是新的随机值
        const randomIndex = Math.floor(Math.random() * randomJokelist.length);
        // 直接传入笑话内容作为reply的参数
        message.reply(randomJokelist[randomIndex]);
    }
});

关键修复点:

  • 移除事件回调内重复定义的randomJokelist,将其放在全局作用域(如需在多个地方调用更合理)。
  • 调整message.reply()的参数,仅传递随机选中的笑话字符串,符合Discord.js的API要求。
  • 将变量名从random改为randomIndex,语义更清晰,避免混淆。

额外补充:如果你的Discord.js版本是v14及以上,需确保启用MessageContent意图,否则messageCreate事件可能无法正常读取消息内容。创建客户端时需配置:

const client = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent // 必须添加此意图才能读取消息内容
    ]
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:10:01