跟踪邀请discord.py

2024-04-25 14:21:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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


@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!")

没有错误,它只是垃圾邮件: 没有人邀请成员到服务器! (_u是一个随机数。)

如果没有提到的人,它是有效的。我如何让它发送上述人员的邀请数量?为什么它会发送垃圾邮件

谢谢


Tags: innonesendforif成员awaitelse
1条回答
网友
1楼 · 发布于 2024-04-25 14:21:09

您似乎忘记检查您的邀请作者是否正确。 您循环发送邀请,但没有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!")

另外,它垃圾邮件的原因是因为在for循环中有await ctx.send语句

相关问题 更多 >