Я пытаюсь создать трекер приглашений с помощью discord.py

Хорошо, моя цель - создать трекер приглашений. В настоящее время вы можете запустить команду /invites, и она сообщит вам, сколько у вас приглашений. Вот код для этого.

@client.command()
async def invites(ctx):
    totalInvites = 0
    for i in await ctx.guild.invites():
        if i.inviter == ctx.author:
            totalInvites += i.uses
    await ctx.send(f"{ctx.author.mention}, you've invited {totalInvites} member{'' if totalInvites == 1 else 's'}!")

Мне интересно, есть ли способ найти чужие приглашения, выполнив /invites @user. Кроме того, чтобы пойти еще дальше, могу ли я создать команду /leaderboards? Он должен показать вложение со списком 10 человек, получивших наибольшее количество приглашений, а также количество приглашений, которые у них есть. И я бы хотел, чтобы был способ вычесть количество приглашений, когда кто-то покидает сервер.


person Community    schedule 30.05.2020    source источник


Ответы (1)


@client.command()
async def invites(ctx, usr: discord.Member=None):
    if usr == None:
       user = ctx.author
    else:
       user = usr
    total_invites = 0
    for i in await ctx.guild.invites():
        if i.inviter == user:
            total_invites += i.uses
    await ctx.send(f"{user.name} has invited {totalInvites} member{'' if totalInvites == 1 else 's'}!")

Прошу прощения, что мне не удалось запустить код. Если приведенный выше код вызывает ошибку, сообщите мне.

person L D    schedule 30.05.2020
comment
Извините, я не могу сказать, для чего это. Это для /invites @user? - person ; 31.05.2020
comment
@iCrySam - это модифицированная версия вашей функции, которая позволяет вам указать пользователя. Вы можете запустить его в обычном режиме (/invites), и он получит все ваши приглашения, или вы можете сделать /invites @user, и он получит все приглашения для этого пользователя. - person L D; 31.05.2020
comment
Извините, я новичок в этом, не могли бы вы объяснить, как работает код? Кроме того, hasteb.in/diwudoda.py, похоже, тоже не работает. Я включил ошибку в ссылку. - person ; 31.05.2020
comment
@iCrySam Проблема с кодом заключается в том, что при отправке сообщения вы отправляете количество приглашений с переменной totalInvites, которую я переименовал в `total_invites '. Я исправил это здесь: hasteb.in/eyovibix.py. Я также добавил дополнительные комментарии к другому коду здесь: hasteb.in/galoqehe.py - person L D; 31.05.2020
comment
hasteb.in/eyovibix.py отправляет эту ошибку discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'str' object has no attribute 'name'. - person ; 31.05.2020