Discord.js 命令处理程序机器人不响应

Posted

技术标签:

【中文标题】Discord.js 命令处理程序机器人不响应【英文标题】:Discord.js command handler bot doesn't respond 【发布时间】:2021-07-23 03:11:58 【问题描述】:

您好,我的命令处理程序有一个非常大的问题,我一直在努力解决这个问题,问题是我的机器人在添加命令后在我键入时没有响应,我尝试了几种来自 youtube 的方法,但没有一个他们的作品,任何帮助非常感谢你 代码如下!


const Discord = require('discord.js');
const client = new Discord.Client();
const config = require('./config.json')
const prefix = '$';
const fs = require('fs');


client.commands = new Discord.Collection();
client.events = new Discord.Collection();

const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));

client.once('ready', () => 
    console.log('Ready!')
);

for (const file of commandFiles) 
    const command = require(`./commands/$file`);
    client.commands.set(command.name, command);


client.on('message', async message => 
    if (!message.content.startsWith(prefix) || message.author.bot) return;

const args = message.content.slice(prefix.length).trim().split(' ');
const command = args.shift().toLowerCase();
    console.log(message.content);

    if (command === `$prefixping`) 
        client.commands.get('ping').execute(message, args);
    

); 

client.login(config.token);

ping.js FILE!

module.exports = 
    name: 'ping',
    description: 'komenda ping',
    execute(message, args) 
        message.channel.send('Pong!');
    ,
;

【问题讨论】:

【参考方案1】:

问题是command 永远不会是$prefixping,因为您已经使用.slice(prefix.length) 从消息中删除了前缀。检查并运行下面的sn-p:

const prefix = '!'
const message = 
  content: '!ping it now'


const args = message.content.slice(prefix.length).trim().split(' ')
const command = args.shift().toLowerCase()

console.log('message.content': message.content, command, args)

要修复它,您需要检查命令是否为字符串"ping"

if (command === 'ping') 
  client.commands.get('ping').execute(message, args)

【讨论】:

以上是关于Discord.js 命令处理程序机器人不响应的主要内容,如果未能解决你的问题,请参考以下文章

discord.js 机器人不响应命令[重复]

Discord.js - 如何实现前缀以避免错误触发命令响应?

discord.js 命令处理程序错误

Discord.js - Discord 机器人停止响应命令

杀死 discord.js 中的命令处理程序脚本

如何为我的 Discord.js 机器人编写事件/命令处理程序?