如何仅在事件名为 discord.py 的服务器上执行事件?
how to execute event only on server from which is event called discord.py?
我的机器人在 2 台服务器上,一旦我想计算 1 台服务器的所有成员,他就会从两台服务器计算。让服务器 1 有 2 个成员,服务器 2 有 3 个成员,结果是 5 而不是 2(如果我想看看我在服务器 1 上有多少成员)
@client.event
async def on_message(message):
if message.content.startswith('!count'):
pom=0
for guild in client.guilds:
for member in guild.members:
pom = pom + 1
await message.channel.send("Number of people on server: " + str(pom))
我假设您要么通过 bot.users 获得会员总数,
或 bot.guilds 列表中每个公会的所有成员的总和。当然,这会给你机器人可以看到的成员总数。相反,您正在寻找的是:
选择一个公会对象,比方说ctx.guild(使用命令的公会)
使用它的 member_count 属性,这将是该公会的成员总数。
你会留下 ctx.guild.member_count 这行,如果你所在的公会有三名成员,那将会是 3.
由于您在 on_message
活动中,您可以使用 message.guild
。
@client.event
async def on_message(message):
if message.content.startswith('!count'):
pom = len(message.guild.members)
await message.channel.send("Number of people on server: " + str(pom))
我的机器人在 2 台服务器上,一旦我想计算 1 台服务器的所有成员,他就会从两台服务器计算。让服务器 1 有 2 个成员,服务器 2 有 3 个成员,结果是 5 而不是 2(如果我想看看我在服务器 1 上有多少成员)
@client.event
async def on_message(message):
if message.content.startswith('!count'):
pom=0
for guild in client.guilds:
for member in guild.members:
pom = pom + 1
await message.channel.send("Number of people on server: " + str(pom))
我假设您要么通过 bot.users 获得会员总数, 或 bot.guilds 列表中每个公会的所有成员的总和。当然,这会给你机器人可以看到的成员总数。相反,您正在寻找的是:
选择一个公会对象,比方说ctx.guild(使用命令的公会)
使用它的 member_count 属性,这将是该公会的成员总数。
你会留下 ctx.guild.member_count 这行,如果你所在的公会有三名成员,那将会是 3.
由于您在 on_message
活动中,您可以使用 message.guild
。
@client.event
async def on_message(message):
if message.content.startswith('!count'):
pom = len(message.guild.members)
await message.channel.send("Number of people on server: " + str(pom))