如何使用 Discord bot 高效删除消息

How to delete messages EFFICIENTLY with Discord bot

我想要一个 Discord 音乐机器人,当它离开语音通道时,它会从命令和日志中清除文本通道。但问题是它需要太多时间(最多 1-3 分钟)。我看到其他机器人能够在更短的时间内完成同样的事情,那么我怎样才能使我的代码更好?

这是我的代码,它确实有效,但我想让机器人更快地删除消息:

} else if (msg.content.trim().toLowerCase() == _CMD_LEAVE) {
        const channel = msg.channel;
        const messageManager = channel.messages;
        messageManager.fetch({ limit: 100 }).then((messages) => {
             messages.forEach((message) => {
                 if ((message.author.id == 0123456789) || (message.content.startsWith(PREFIX))) {  
                     message.delete();
                 }  
             });
        });
        
        if (guildMap.has(mapKey)) {
            
            let val = guildMap.get(mapKey);
            if (val.voice_Channel) val.voice_Channel.leave()
            if (val.voice_Connection) val.voice_Connection.disconnect()
            if (val.musicYTStream) val.musicYTStream.destroy()
                guildMap.delete(mapKey)
            msg.reply("Disconnected.")    

        } else {
            msg.reply("Cannot leave because not connected.")
        }
    }

Discord.js 具有修剪大量消息的功能。

首先,您获取频道中特定时间点的所有消息(例如最新的 100 条消息),然后根据您的条件过滤它们。 之后,您使用 channel.bulkDelete(messages) 立即删除所有这些。 遗憾的是,这仅适用于 14 天以内的邮件,但它比手动删除它们要有效得多。 代码可能看起来像这样:

//fetch 100 most recent messages
channel.messages.fetch({limit: 100}).then(messages => {
    //filter the messages to only delete messages by a certain user
    messages = messages.filter(m => m.author.id === useridhere)

    //bulk delete the messages
    channel.bulkDelete(messages)

})