我是discord.js的新手,但了解到我可以使用bulkDelete删除我的消息,即使它们已经超过2周,它也会全部删除。我会在服务器上每月清除一次邮件,我每月手动进行一次审核,无需多说,这将永远花费。我想知道是否有人能够帮助我做出一个无论何时调用它都会自动执行的命令?
谢谢, K
答案 0 :(得分:0)
我将设置一个递归函数,以检查通道中是否有消息(每次最多100条):如果没有消息,它将停止,否则将其删除并重新启动。
function clean(channel, limit = 100) {
return channel.fetchMessages({limit}).then(async collected => {
let mine = collected.filter(m => m.author.id == 'your_id_here'); // this gets only your messages
if (mine.size > 0) {
await channel.bulkDelete(mine, true);
clean(channel);
} else channel.send("The channel is now empty!").delete(5000); // this message is deleted after 5 s
});
}
您可以使这种想法适合您现有的命令解析器,或者,如果您不知道如何实现,请尝试:
client.on('message', msg => {
if (msg.author.bot || msg.author != YOU) return;
// with YOU i mean your User object, to check permissions
let command = 'clean', // the name of your command
args = msg.content.split(' ');
if (args[0].toLowerCase() == command)
clean(msg.channel, !isNaN(args[1]) ? args[1] : undefined); //<-- THIS is how to use the function
// used a ternary operator to check if the other arg is a number
});
这只是非常的基本实现,有很多更好的方法来检测命令。
答案 1 :(得分:0)
我刚刚找到了一种过滤消息的方法。 您可以提取邮件,然后检查每封邮件是否属于您
await message.channel.fetchMessages({
limit: 100
}).then((msgCollection) => {
msgCollection.forEach((msg) => {
if(msg.author.id == message.author.id) {
msg.delete();
}
})
});