试图删除某个用户的邮件,但没有任何反应:
bot.js
client.on("message", (message) => {
if (message.content === '$deleteuser') {
message.channel.fetchMessages({limit: 10}).then(collected => { //collected is a Collection
collected.forEach(msg => {
if (message.author.id === '474851505908875266') {
message.delete(0);
}
});
});
}
});
答案 0 :(得分:1)
首先,您的问题是由于您在message
回调函数中错误地使用msg
而不是forEach()
(如@Gruntzy所指出的)引起的。按照声明,message
是事件的消息参数,而msg
是forEach()
迭代的消息。因此,当您在回调中使用message
时,您正在与原始事件消息进行交互。
其次,由于单独的Message.delete()
调用,您的代码将导致速率限制。使用TextChannel.bulkDelete()
。
改进的代码:
client.on('message', async message => {
if (message.content === '$deleteuser') {
try {
const toDelete = [];
const fetched = await message.channel.fetchMessages({ limit: 10 });
fetched.forEach(msg => {
if (msg.author.id === '474851505908875266') toDelete.push(msg.id);
});
await message.channel.bulkDelete(toDelete);
} catch(err) {
console.error(err);
}
}
});