我如何确定发送的消息是否是作者的第一条消息?

时间:2020-07-09 15:11:44

标签: node.js discord.js

我目前正在制作一个机器人,该机器人通过在作者的第一条消息之后立即发送一条消息来欢迎新用户。要澄清:

  1. 用户加入
  2. 用户发送第一条消息
  3. 函数被称为

如何确定作者之前是否在公会中发送过邮件?
目前,我唯一的想法是为每个新成员(sqlite)添加一行,并在他们发送邮件时,该行将被删除,并且漫游器可以欢迎用户。

2 个答案:

答案 0 :(得分:1)

是的,为此您需要一个数据库,我不认为discord会保留每个公会中发送的邮件数量,至少在discord.js文档中找不到任何内容。

答案 1 :(得分:0)

幸运的是,我们可以获取所有频道,然后从频道中获取消息:

client.on('message', async message => {
  let totalUserMessages = 0;
  let txtChannels = Array.from(message.guild.channels.cache.filter(c => c.type === 'text').values());
  for (var i = 0; i < txtChannels.length; i++) {
    let channel = txtChannels[i];
    let messages = await channel.messages.fetch();
    let userMessages = messages.filter(m => m.author.id === message.author.id);
    let numOfMessages = Array.from((userMessages).values()).length;
    console.log(numOfMessages);
    totalUserMessages += numOfMessages;
  }

  console.log(totalUserMessages);
  if (totalUserMessages === 1) {
    // do stuff here
  }
});