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

Discord机器人启动正常但+hi指令无响应,如何解决?

Discord机器人指令无响应问题排查与解决

问题情况

  • 机器人启动时可正常发送上线通知,但输入+hi指令后无任何响应
  • 多次重启机器人无效,但相同代码在另一机器人账号上能正常运行

相关截图

机器人启动时发送消息
输入指令无反应

机器人代码

// - Discord Requires
const Discord = require('discord.js');
const client = new Discord.Client();
const prefix = '+';
// - Imports
const date = require('date-and-time');
const fs = require('fs');
const express = require("express")();
// - Embed
const { MessageEmbed } = require('discord.js');
// - Logo
const logo = './images/logo.png'
// - On Start
client.once('ready', () =>{
  //- Status and Console log Message
  client.user.setPresence({activity: {name:"Counting-Days", type:'WATCHING'}, status:'online'})
  .then(console.log)
  .catch(console.error);
  setTimeout(function(){
    console.log("🍉I'm ready, from now on I'm gonna count Christmas Days!:)🍉");
  }, 2000);
  // - Current Date and Time
  const now_date = new Date();
  date.format(now_date, 'YYYY/MM/DD HH:mm:ss');
  date.format(now_date, 'ddd, MMM DD YYYY');
  date.format(now_date, 'hh:mm A [GMT]Z');
  date.format(now_date, 'hh:mm A [GMT]Z', true);
  // - Makes the pattern for time
  const time_pattern = date.compile('hh:mm A');
  const time = date.format(now_date, time_pattern);
  const date_pattern = date.compile('ddd, MMM DD YYYY')
  const date_a = date.format(now_date, date_pattern);
  // - Channel Message => Ready
  client.channels.cache.get('935621866926768159').send(`**🎄Christmas Countdown Bot🎄** is awake |Date: **${date_a}**, Time: **${time}**| and waiting to reply to |${prefix}| commands!✅`)
});

// - Calculates the Days until Christmas (25/12/2022)
const newYears = "25 Dec 2022";

const newYearsDate = new Date(newYears);
const currentDate = new Date();

const totalSeconds = (newYearsDate - currentDate) / 1000;
const days = Math.floor(totalSeconds / 3600 / 24);
const hours = Math.floor(totalSeconds / 3600) % 24;
const mins = Math.floor(totalSeconds / 60) % 60;
const seconds = Math.floor(totalSeconds) % 60;

client.on("message", function (message){
  if (message.content === `${prefix}hi`){
    message.channel.send(`Hey, ${days}`);
  }
})
// -Token
client.login('TOKEN')

解决方案

1. 修复事件监听兼容性问题

Discord.js v13及以上版本已废弃message事件,改用messageCreate事件,这是指令无响应的核心原因之一。修改事件监听代码:

// 替换原有的message事件
client.on("messageCreate", function (message){
  if (message.content === `${prefix}hi`){
    message.channel.send(`Hey, ${days}`);
  }
})

2. 检查机器人权限配置

  • 确认当前机器人账号在目标服务器拥有发送消息、读取消息历史权限,尤其是指令所在频道
  • 对比能正常运行的机器人账号权限,排查权限差异

3. 优化指令匹配逻辑

原代码使用严格相等匹配,若消息前后有空格会触发失败,可改为:

client.on("messageCreate", function (message){
  // 忽略机器人自身消息
  if (message.author.bot) return;
  // 处理带空格的情况
  if (message.content.trim() === `${prefix}hi`){
    message.channel.send(`Hey, ${days}`);
  }
})

4. 修正倒计时实时计算逻辑

原代码中days仅在启动时计算一次,后续不会更新,需将计算逻辑移入指令处理函数:

client.on("messageCreate", function (message){
  if (message.content.trim() === `${prefix}hi`){
    const currentDate = new Date();
    const totalSeconds = (newYearsDate - currentDate) / 1000;
    const days = Math.floor(totalSeconds / 3600 / 24);
    message.channel.send(`Hey, ${days}`);
  }
})

5. 排查账号状态

确认机器人账号未被服务器静音、封禁,或在目标频道无发送消息限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:50:32