如何仅在事件名为 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 列表中每个公会的所有成员的总和。当然,这会给你机器人可以看到的成员总数。相反,您正在寻找的是:

  1. 选择一个公会对象,比方说ctx.guild(使用命令的公会)

  2. 使用它的 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))