删除获取的邮件时出现问题

时间:2019-05-27 12:30:37

标签: javascript node.js discord.js

试图删除某个用户的邮件,但没有任何反应:

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);
                        }


                    });
                });
            }

        });

1 个答案:

答案 0 :(得分:1)

首先,您的问题是由于您在message回调函数中错误地使用msg而不是forEach()(如@Gruntzy所指出的)引起的。按照声明,message是事件的消息参数,而msgforEach()迭代的消息。因此,当您在回调中使用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);
    }
  }
});