我正在尝试向我的机器人添加一个命令,以回复用户邀请该服务器的总人数
我的代码:
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
我做错了什么?
答案 0 :(得分:1)
您几乎有了正确的主意!
@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
)。
参考:
Guild.invites
-该代码最初不起作用,因为我忘记了这是一个协程(必须称为()
和await
ed)。Invite.uses
Invite.inviter
commands.command()