【问题标题】:Get count of member's messages in channel in discord.js在 discord.js 中获取频道中成员的消息计数
【发布时间】:2021-08-13 01:47:54
【问题描述】:

有什么方法可以统计discord.js中指定Discord频道中指定用户的消息?当我使用时:

const countMyMessages = async (channel, member) => {
    const messages = await channel.messages.fetch()
    const myMessages = message.filter(m => m.author.id === member.id)
    console.log(myMessages.size)
}

只获取了 50 条消息,所以我无法计算用户的所有消息。而选项limit 的最大值可以为100。另一方面,/guilds/guild_id/messages/search API 不适用于机器人。

【问题讨论】:

  • 我认为唯一的方法是获取 all 消息(以 100 条为一组)。我建议将每个用户的消息计数存储在数据库中,并在每条消息上增加此计数器,或者在需要时仅使用新消息对其进行更新。如果这是一个可行的解决方案,请告诉我,我会写一个完整的答案。

标签: javascript discord discord.js


【解决方案1】:

您需要使用存储系统将此类统计信息保存在 Discord 上。

我建议你首先使用 SQLite(比如Enmap npm 包)。

我可以根据this one快速为你画出结构。


const Enmap = require("enmap");
client.messages = new Enmap("messages");

client.on("message", message => {
  if (message.author.bot) return;
  if (message.guild) {
    const key = `${message.guild.id}-${message.author.id}`;
    client.messages.ensure(key, {
      user: message.author.id,
      guild: message.guild.id,
      messages: 0
    });
    client.messages.inc(key, "messages");


    // Do your stuff here.
    console.log(client.messages.get(key, "messages"))
  }
});

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2020-10-02
    相关资源
    最近更新 更多