删除已提取消息的问题

Problems with deleting messages that were fetched

正在尝试删除某个用户的消息,但没有任何反应:

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


                    });
                });
            }

        });

首先,您的问题是由于您在 forEach() 回调中错误地使用了 message 而不是 msg(正如 @Gruntzy 所指出的)。如声明的那样,message 是事件的消息参数,而 msgforEach() 迭代的消息。因此,当您在回调中使用 message 时,您正在与原始事件消息进行交互。

其次,由于单独的 Message.delete() calls. Use 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);
    }
  }
});