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

Discord.js开发问题:机器人在线但不响应消息

Discord机器人登录成功但不响应消息的解决办法

以下是导致问题的核心原因及修复方案:

问题点与修复步骤

  • 事件名称过时:Discord.js v13及以上版本已弃用message事件,需改用messageCreate事件监听消息。
  • 缺少消息内容读取权限:要获取消息文本内容,必须添加MessageContent意图,同时需在Discord开发者后台的机器人页面开启"Message Content Intent"开关。
  • 冷却变量未初始化且逻辑颠倒:userCooldown未声明初始化,且冷却逻辑写反——初始状态应允许用户触发指令,触发后进入冷却,冷却结束后恢复可触发状态。

修复后的完整代码

const Discord = require("discord.js")

const TOKEN = "MY TOKEN"
// 初始化冷却状态存储对象
const userCooldown = {};

const client = new Discord.Client({
     intents: [
        "Guilds",
        "GuildMessages",
        "MessageContent" // 添加读取消息内容的必要意图
    ]
})

client.on("ready", () => {
    console.log(`Logged in as ${client.user.tag}`)
})

// 使用正确的messageCreate事件监听消息
client.on("messageCreate", message => {
    // 忽略机器人自身发送的消息,避免循环触发
    if (message.author.bot) return;
    
    if (message.content.includes('ping')) {
        // 检查用户是否不在冷却状态
        if (!userCooldown[message.author.id]) {
            message.reply('Pong');
            // 标记用户进入冷却
            userCooldown[message.author.id] = true;
            setTimeout(() => {
                // 5秒冷却结束后恢复可触发状态
                userCooldown[message.author.id] = false;
            }, 5000)
        }
    }
})

client.login(TOKEN)

额外注意事项

  • 登录Discord开发者平台,找到你的机器人应用,进入「Bot」页面,在「Privileged Gateway Intents」区域开启「Message Content Intent」,否则代码中的意图配置无效。
  • 确保机器人在目标服务器中拥有读取消息和发送消息的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:24:16