【发布时间】:2022-01-21 09:12:04
【问题描述】:
我正在尝试使用 discord.py 库编写一个函数。该功能旨在奖励特定用户邀请其他用户。
我当前的代码确实可以工作,但我担心代码的效率。特别是在这两种情况下:
- 如果有很多用户快速连续加入
- 如果服务器中有很多用户(100k+)
我的代码:
@client.event
async def on_ready():
global members_joined
MAIN_GUILD = client.get_guild() # ID Redacted
# Get a list of users in the server. This is to prevent additional rewards on leave+rejoin
invites_before_join = await MAIN_GUILD.invites()
members_joined = await MAIN_GUILD.fetch_members(limit=None).flatten()
@client.event
async def on_member_join(member):
global invites_before_join
invites_after_join = await member.guild.invites()
for before_invite in invites_before_join:
for after_invite in invites_after_join:
if(before_invite.code == after_invite.code and before_invite.uses < after_invite.uses):
if(member not in members_joined):
# code here (redacted)
members_joined.append(member) # Add them to the list, so they cannot leave+rejoin to reactivate
invites_before_join = invites_after_join
return
如您所见,在我的解决方案中,我使用了嵌套的 for 循环。我想知道这是否是我应该在效率方面关注的事情(特别是出于上述两个原因)。我之所以这样做,是因为我需要邀请者的姓名和ID,这样我才能奖励他们。
【问题讨论】:
-
已经有邀请跟踪器了,但要好得多,你为什么要重新发明轮子? github.com/cyrus01337/invites
-
老实说,我不知道有这样的东西存在。
标签: python discord discord.py