在Discord.py中获取用户的邀请总数

时间:2020-05-18 18:06:08

标签: discord discord.py

我正在尝试向我的机器人添加一个命令,以回复用户邀请该服务器的总人数

我的代码:

if message.content.startswith('!invites'):
    totalInvites = message.guild.invites
    await message.channel.send("You have invited: " + totalInvites + " members to the server")

该机器人回复:

You have invited: <bound method Guild.invites of <Guild id=server_id_goes_here name='my bot' shard_id=None chunked=True member_count=12>> members to the server

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您几乎有了正确的主意!


on_message事件用法:

@bot.event
async def on_message(message):
    if message.content.startswith('!invites'):
        totalInvites = 0
        for i in await message.guild.invites():
            if i.inviter == message.author:
                totalInvites += i.uses
        await message.channel.send(f"You've invited {totalInvites}
    member{'' if totalInvites == 1 else 's'} to the server!")

命令修饰符的用法:

@bot.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"You've invited {totalInvites} member{'' if totalInvites == 1 else 's'} to the server!")

首先,我要遍历公会中的每个邀请,检查是谁创建了每个邀请。如果邀请的创建者与执行命令的用户匹配,则它将邀请的使用次数添加到运行总计中。

您不需要包括{'' if totalInvites == 1 else 's'},这只是出于奇怪的情况,他们邀请了1个人(将member变成复数-members)。


参考: