首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >discord.py邀请- approximate_presence_count API逐渐变慢

discord.py邀请- approximate_presence_count API逐渐变慢
EN

Stack Overflow用户
提问于 2022-06-12 22:40:25
回答 1查看 262关注 0票数 3

TL/DR: --我每10秒查询一个邀请链接的approximate_presence_count,它会在很长一段时间内逐渐停止检测存在变化。我怎么才能解决这个问题?

目标

我正在编写一个不和谐的机器人,它监视我所在的几个大型(>100个)服务器的在线(和其他状态)成员的数量。机器人不是任何相关服务器的成员,应该每10秒左右记录一次成员数。

这不是一个XY问题,我不希望bot成为服务器的成员,而只是希望它使用来自invite链接的approximate_presence_count

方法

为此,我制作了指向每个服务器的永久邀请链接,并通过一个approximate_presence_count以10秒的时间间隔查询它们的tasks.loop,并将这些值记录到文本文件中。

此外,我有一个小型测试服务器,在其中我有几个朋友登录和关闭,以测试成员计数是否工作。

所有意图都在开发人员门户中启用。这不是一个与意图有关的问题。

问题

在我的小型测试服务器上进行测试时,当我在大约24小时内运行机器人时,我注意到在我的一个朋友登录或关闭不和之后,检测approximate_presence_count中的变化变得越来越慢。我在不同的日子里复制了这个。虽然approximate_presence_count在任何给定时间更新的时间都有一些微小的变化,可能是由于后端负载的变化造成的,这种趋势是恒定的。

大约20-24小时后,approximate_presence_count几乎毫无用处,很少检测到任何变化.

预期结果:登录/注销与approximate_presence_count变化之间的延迟保持不变

实际结果:登录/注销与approximate_presence_count变化之间的延迟逐渐增大

我试过的

除了下面的代码之外,我还尝试不每次获取logger循环的邀请,但这也不起作用。

我可以在多个网络和多台机器上复制这些信息。

最小可重现性示例

下面的代码是从bot中提取出来的,应该只是相关的组件。在提取过程中可能会出现错误,但要点保持不变。

代码语言:javascript
复制
import discord
from discord.ext import tasks

TOKEN='removed'
INTENTS=discord.Intents.all()
links=['discord.gg/foobarbaz','discord.gg/fillertext']#real invites removed

client = discord.Client(intents=INTENTS)

@tasks.loop(seconds=10)
async def logger():
  invites=[await client.fetch_invite(i,with_counts=True)for i in links]#invite objects
  counts=[getattr(i,'approximate_presence_count')for i in invites]#presence counts
  
  with open('logs.txt','a') as file:
    file.write(datetime.datetime.today().strftime("%d/%m/%Y, %H:%M:%S ")+','.join(map(str,counts))+'\n')

@client.event
async def on_ready():
  logger.start()

client.run(TOKEN)

最后注记

approximate_presence_count中的期望延迟

在我的测试中,在没有出现此问题的情况下,登录/注销与approximate_presence_count更改之间的延迟为5到40秒,每100次中可能有1次延迟至60秒。

跟踪的邀请数目

该机器人目前正在跟踪6个邀请链接,因此请求不和的频率平均为0.6/秒。这是否足以导致一个比率消除?,如EricJin在评论中所提到的,这是不可能的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-15 23:40:15

这很可能是不和谐的结束问题,正如评论中所建议的。他们有改变了他们邀请的方式。这包括永久邀请链接的工作方式。虽然这篇文章没有说明内部的变化,但它确实说明了新的邀请如何在实际的应用程序/站点上工作。更改到邀请线的时间大约是什么时候发布的(2022年5月),但从那时起就有了更新。

似乎您在进行这些更改时遇到了一个问题,这个问题似乎至少在发布此答案时是固定的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72596371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档