如何让机器人在一定时间后删除消息

How to make a bot delete messages after a certain time period

我试图让我的机器人在 15 秒后删除 4 条消息,但我不知道如何让它这样做。

const commando = require('discord.js-commando');

class HitOrMissCommand extends commando.Command
{
    constructor(client)
    {
        super(client,{
            name: 'hitormiss',
            group: 'simple',
            memberName: 'hitormiss',
            description: 'i bet he doesnt kiss yah!'
        });    
    }

    async run(message, args)
    {
       message.reply("I guess they never miss, huh?")
       message.reply("you got a boyfriend i bet he doesnt kiss yah!, MWAH!")
       message.reply("He gon find another girl and he wont miss yah")
       message.reply("He gon skirt and hit the dab like wiz khalifa")
    }
}

module.exports = HitOrMissCommand;

可能想看看这个问题

正如 post 中的回答,最好的方法是在 x 秒后删除消息。

    message.reply('Hit or miss.')
  .then(msg => {
    msg.delete(10000)
  })
  .catch(); /*Used for error handling*/

应归功于用户 LW001,他在我提到的 post 上回答了问题。

由于 相似,您可以使用相同的技术 - 添加删除超时。回复后,.then() 使用您的 15 秒计时器(15000 毫秒)删除消息:

message.reply("I guess they never miss, huh?").then(message => message.delete(15000)).catch(err => throw err);

或者如果你不能使用箭头语法:

message.reply("I guess they never miss, huh?").then(function(message) {
    message.delete(15000);
}).catch(function(err) {
    throw err;
});

可以这样做。

var replyM = message.reply("I guess they never miss, huh?")

setTimeout(function(){
  replyM.delete
}, 1000);
if (message.content.startsWith(`!test`)) {
    await message.channel.send('Hello').then(r => r.delete({ timeout: 5000 }))
    console.log("test");
}