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

Replit中Discord.js机器人无法响应消息命令的问题排查

问题原因与修复方案

核心问题:事件名称错误

从Discord.js v13版本开始,原有的message事件已被官方弃用,替换为messageCreate事件。你的代码中仍在监听message事件,这会导致机器人无法捕获用户发送的消息,自然无法响应前缀命令。

次要问题:代码语法不完整

你提供的代码中,client.on('message', ...)的回调函数末尾缺少闭合的)和;,这会导致代码运行报错,进一步影响命令逻辑执行。

Replit环境额外注意事项

  • 特权意图确认:即使代码中设置了全intents(32767),仍需在Discord开发者平台的机器人页面,手动开启MESSAGE CONTENT INTENT特权意图——这是读取消息内容的必要权限,Replit环境不会自动帮你开启这个选项。
  • 登录语句检查:确保代码末尾存在client.login(process.env.TOKEN)语句(你提供的代码中未包含这部分,若缺失会导致机器人无法正常启动;你提到欢迎消息能正常发送,说明这部分可能写在keepAlive模块里,但仍需确认)。

修正后的代码示例

const { Client } = require('discord.js');
const client = new Client({ intents: 32767 });

const keepAlive = require('./server');
require("dotenv").config();
const prefix = '!';

client.once('ready', () => {
  console.log('Jp Learn Online');
});

client.on('guildCreate', guild => {
  guild.systemChannel.send('this message wil print')
});

// 替换为messageCreate事件
client.on('messageCreate', async message => {
  if (!message.content.startsWith(prefix) || message.author.bot) return;

  const args = message.content.slice(prefix.length).split(/ +/);
  const command = args.shift().toLowerCase();

  if (command === 'jhelp') {
    message.channel.send('こんにちは、私はDiscordロボットです。始めたいなら、!jhelp タイプしてください。 \n\n Hello I am a discord bot built to help learn the Japanese language! \n\n If you want to access a japanese dictionary type !dictionary \n\n If you would like to learn a random Japanese Phrase type !teachme \n\n If you would like to answer a challenge question type !challenge1 through 5 each different numbered challnege will ask a different question \n (ie. !challenge1) this will ask the first question.')
  }
}); // 补充闭合符号

// 确保机器人正常登录
keepAlive();
client.login(process.env.TOKEN);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:15:54