【问题标题】:How to check how many messages a user has sent in a server如何检查用户在服务器中发送了多少条消息
【发布时间】:2020-11-28 19:29:25
【问题描述】:

我一直在尝试为根据发送的消息数量运行的 XP 系统执行此操作。每条消息是 5 XP,但我还没有弄清楚如何找到用户(在服务器中)发送的消息数量。有人可以帮忙吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow!您似乎在要求某人为您编写一些代码。 Stack Overflow 是一个问答网站,而不是代码编写服务。请see here学习如何写出有效的问题。
  • 您好!感谢您的欢迎......但我主要是在我如何检查之后。我并不是真的要求编写代码。怎么说呢,我正在寻找可以检查这个的行。例如guild.channels.cache.find(ch => ch.name === '---') 但是,我确实理解这个问题可以被接受,因为我正在寻找一个喂我的人

标签: discord discord.js


【解决方案1】:

恐怕唯一的办法就是查看公会中的每条消息并一一数一数。
您可以使用一些优化技巧,例如不查看用户加入 (GuildMember.joinedAt) 之前发送的消息,但这仍然是一项巨大的操作,因为您最终需要获取公会中的每条消息。

Discord 中的搜索功能在这种情况下可能很有用,但目前在 Discord.js 中不可用(或根本不提供给机器人用户)。

我认为对你来说最好的办法就是根本不这样做:最好保留一个包含每个用户的 exp 级别的数据库,并在每条消息上更新他们的 exp(或者,如果你愿意,可以每天更新一次) .
根本不保留数据库不是一个可行的解决方案,因为您每次都需要获取整个公会(而且我认为此时您会受到速率限制)。
如果你只尝试这样做一次来为每个人建立初始级别,那么你最好根据他们加入公会后的时间做一些事情,或者让每个人从 0 开始。 但是有一个例外:如果您认为您的公会足够小,您可以一次获取所有消息,但到那时,您可以让每个人都从 0 开始,这要简单得多。

【讨论】:

  • 哦...感谢您的详细解释。我可能会尝试获取数据库。有什么建议吗?
  • 不客气 :)。关于数据库:选项的数量确实无穷无尽,答案可能会根据您的机器人范围而有很大差异。如果你只是为你自己的公会构建一个机器人,那么保持简单,只使用一个 JSON 文件,机器人可以定期保存数据库。除非您将拥有数百万个条目和高访问率,否则您不会真正从使用一个数据库而不是另一个数据库中获得太多好处,您最好尽可能保持基本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 2019-12-23
  • 2019-02-12
  • 2019-12-06
  • 1970-01-01
  • 2020-12-15
  • 2018-08-16
相关资源
最近更新 更多