我想执行一个命令来显示会员人数,但是它不起作用
这就是我所拥有的:
@bot.command(name='membercount')
async def membercount(ctx):
await ctx.send(len(guild.member_count))
,这是我得到的错误:
Module 'discord.guild' has no 'member_count' member
我尝试在Internet上搜索,但找不到可行的选择。
答案 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()