如何使用 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)
})
我想要一个 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)
})