Javascript Discord.js通过现有函数删除消息

Javascript Discord.js通过现有函数删除消息,javascript,discord,discord.js,message,Javascript,Discord,Discord.js,Message,问题 当执行我的代码时,我确实没有收到任何错误,但我想添加到一个函数中,但我尝试了几乎所有的方法来处理它。此时,由于混乱和挫折,变量已被删除 需要做的是,发起命令的用户在短时间延迟后,他们的消息会被删除。我尝试了message.delete(1000)和v12的其他变体,但没有成功。无法从我的活动函数传递“message”变量 我不知道,也许我已经完全离开了,只是对自己施加了压力。真的很尴尬,我想不出一条消息。删除。请帮忙。为无知道歉 const Discord = require('disco

问题 当执行我的代码时,我确实没有收到任何错误,但我想添加到一个函数中,但我尝试了几乎所有的方法来处理它。此时,由于混乱和挫折,变量已被删除

需要做的是,发起命令的用户在短时间延迟后,他们的消息会被删除。我尝试了message.delete(1000)和v12的其他变体,但没有成功。无法从我的活动函数传递“message”变量

我不知道,也许我已经完全离开了,只是对自己施加了压力。真的很尴尬,我想不出一条消息。删除。请帮忙。为无知道歉

const Discord = require('discord.js');
const bot = new Discord.Client();
const token = "";
const PREFIX = "!";

const fs = require('fs');
bot.commands = new Discord.Collection();

const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
for(const file of commandFiles){
    const command = require(`./commands/${file}`);

    bot.commands.set(command.name, command);
}


bot.on('ready', () => {
    console.log("The bot is active and ready to go!");
});

      bot.on('message', function(message) {
        if(message.content[0] === PREFIX) {
            let command = message.content.substring(message.content.indexOf(" ") + 1, message.content.length);

        }
    });

bot.on('message', message => {
    let args = message.content.substring(PREFIX.length).split(" ");

    switch (args[0]) {

        case "crash":
            bot.commands.get('crash').execute(message, args);
        break;

        case "hello":
            bot.commands.get('hello').execute(message, args);
        break;

        case "purge":
            bot.commands.get('purge').execute(message, args);
        break;
    }

});

bot.login(token);
这里有一个“crash.js”的例子供参考。不知道我是否需要从那里执行删除

module.exports = {
    name: 'crash',
    description: "Crash",
    execute(message, args){
        message.author.send("Here is the link you requested");
    }
}

您可以在模块内执行删除。消息作为完整对象传递,因此您只需对其调用delete方法。但是,对象是一个对象,这意味着它需要这样定义。为了清楚起见,我将使用另一个变量,但这可以内联完成

let options = {
    timeout: 1000,
    reason: 'Because I said so.'
}

message.delete(options);
或内联

message.delete({timeout: 1000});

意外标识符“原因”。未将其放置在正确的位置。我显然误解了JS的整体执行结构。正如我所说的,我为我的无知感到抱歉。谢谢你的帮助,让它工作起来。在我扩展这个机器人之前,我该如何实现。在这个场景中使用小写?再次感谢您的帮助。@BrianChambers您可能已将其放置在期望同步的位置。Node.js本质上是异步的,这可能会让不习惯它的人感到困惑。例如,message.author.send是异步的,所以如果您不等待它,那么放在它后面的任何东西都可能首先发生。这是一个很详细的问题,所以我建议做一些研究。关键词是异步编程、回调、承诺和异步/等待。@BrianChambers您希望它在哪里?如果您谈论的是命令,我会将它放在switch语句
switch(args[0].toLowerCase())
实际上,我根本不会使用开关。如果不存在commands.get,它将是未定义的,因此可以直接使用args[0]
let command=bot.commands.get(args[0].toLowerCase());if(command){command.execute(message,args);}