如何在discord.py重写中获取成员数?

时间:2020-05-31 10:52:21

标签: discord.py-rewrite

我想执行一个命令来显示会员人数,但是它不起作用

这就是我所拥有的:

@bot.command(name='membercount')
async def membercount(ctx):
    await ctx.send(len(guild.member_count))

,这是我得到的错误: Module 'discord.guild' has no 'member_count' member

我尝试在Internet上搜索,但找不到可行的选择。

7 个答案:

答案 0 :(得分:3)

尽管Ron的示例确实有效,但考虑到ctx.guild.members只是一个列表,这并不是一种非常优雅的方式,这意味着您可以像这样使用len():< / p>

member_count = len(ctx.guild.members) # includes bots

true_member_count = len([m for m in ctx.guild.members if not m.bot]) # doesn't include bots

也不要忘记,如果答案解决了您的问题,则应将其标记为“已接受”,并在其旁边带有对号,以显示其他来自搜索机的用户对这个问题有所帮助。 / p>

答案 1 :(得分:1)

简单的for循环应该起作用。

member_count = 0;

for member in ctx.guild.members:
    member_count += 1
await ctx.send(member_count)

答案 2 :(得分:1)

在Discord(用户设置->可访问性)中启用开发人员模式,然后右键单击服务器图标并单击“复制ID”,然后在异步定义后键入以下代码行: guild = client.get_guild(paste the copied ID here) 另外,您不需要len(guild.member_count),它将返回成员计数的位数。仅使用guild.member_count。

希望这对您有帮助

答案 3 :(得分:1)

你可以做

@c.command(aliases=["mc"])

async def member_count(ctx):

    a=ctx.guild.member_count
    b=discord.Embed(title=f"members in {ctx.guild.name}",description=a,color=discord.Color((0xffff00)))
    await ctx.send(embed=b)

我认为这是最好,最简单的方法

答案 4 :(得分:1)

不需要使用 len(guild.member_count) ctx.guild 的 member_count 属性提供了 membercount 的数量。 举个例子:

@bot.command(name='membercount')
async def membercount(ctx):
    await ctx.send(ctx.guild.member_count)

答案 5 :(得分:0)

你应该使用 ctx.message.guild.member_count

答案 6 :(得分:0)

如果你想让它工作,那么这就是你可以做的。它也是一个嵌入,因此看起来不错,您可以更改颜色和页脚,如果需要,还可以更改缩略图,并将标题设为 URL。两全其美,在命令执行后也会删除消息。

@client.command(name='membercount')
    async def membercount(ctx):
        embed = discord.Embed(
            title=('Membercount'),
            description =(f'There are currently **{ctx.guild.member_count}** members in the server!'),
            url = (''),
            timestamp = datetime.now(),
            color= discord.Colour.dark_blue()
        )
        embed.set_footer(text='Our Community')
        embed.set_thumbnail(url='')
        await ctx.send(embed=embed)
        await ctx.message.delete()