跟踪邀请不一致

时间:2020-11-12 21:06:14

标签: python discord discord.py discord.py-rewrite

我有一个应该跟踪邀请的代码。如果没有提及的成员,那么它将显示您自己的邀请,但是如果存在,它将显示该成员的邀请。


@client.command()
async def invites(ctx, user = None):
  if user == None:
    totalInvites = 0
    for i in await ctx.guild.invites():
        if i.inviter == ctx.author:
            totalInvites += i.uses
    await ctx.send(f"You've invited {totalInvites} member{'' if totalInvites == 1 else 's'} to the server!")
  else:
    totalInvites = 0
    for i in await ctx.guild.invites():
       totalInvites += i.uses
       member = ctx.message.guild.get_member_named(user)
       await ctx.send(f"{member} has invited {totalInvites} member{'' if totalInvites == 1 else 's'} to the server!")

没有错误,而是垃圾邮件: 没有人邀请__成员加入服务器! (__是一个随机数。)

如果没有提到的人,它会起作用。我如何获得发送上述人的邀请数量的信息?为什么会向邮件发送垃圾邮件?

谢谢。

1 个答案:

答案 0 :(得分:1)

您似乎忘记了检查邀请作者是否正确。 您可以遍历邀请,但没有if i.inviter == member

固定代码为:

@client.command()
async def invites(ctx, user = None):
  if user == None:
    totalInvites = 0
    for i in await ctx.guild.invites():
        if i.inviter == ctx.author:
            totalInvites += i.uses
    await ctx.send(f"You've invited {totalInvites} member{'' if totalInvites == 1 else 's'} to the server!")
  else:
    totalInvites = 0
    for i in await ctx.guild.invites():
       member = ctx.message.guild.get_member_named(user)
       if i.inviter == member:
         totalInvites += i.uses
    await ctx.send(f"{member} has invited {totalInvites} member{'' if totalInvites == 1 else 's'} to the server!")

此外,它发出垃圾邮件的原因是因为您的await ctx.send语句位于for循环中。

相关问题