Apakah ada cara untuk hanya mendapatkan anggota tanpa bot server?

@bot.command()
async def stats(ctx):
    guild = bot.get_guild("guild")

    await ctx.send(f'{guild.member_count}')

Ketika saya menjalankan kode ini, itu mengirim pesan dengan jumlah anggota termasuk bot. Saya ingin itu hanya mengirim saya jumlah anggota yang sebenarnya (tidak ada bot)!

-3
mangoeis 28 Mei 2021, 23:55

3 jawaban

Jawaban Terbaik

Anda bisa menggunakan:

members = 0
for member in ctx.guild.members:
    if not member.bot:
        members += 1

Menggunakan .bot Cek apakah akunnya adalah bot atau tidak.

2
FluxedScript 28 Mei 2021, 21:00

Anda dapat menggunakan discord.Guild.members Properti untuk mendapatkan semua anggota di guild. Kemudian, gunakan discord.Member.bot Jika setiap anggota adalah bot.

Ini hanya akan:

humans = []
for member in ctx.guild.members:
    if not member.bot:
        humans.append(member)
num_humans = len(humans)

Atau, untuk penggemar pemahaman daftar:

humans = [m for m in ctx.guild.members if not m.bot]
num_humans = len(humans)

Catatan: Ini mengasumsikan bahwa Anda memiliki semua maksud yang diperlukan mengaktifkan.

-2
Jacob Lee 28 Mei 2021, 21:58

Anda perlu mengaktifkan niat members (sehingga bot Anda dapat melihat seluruh daftar anggota, bukan hanya itu sendiri), kemudian hitung jumlah non-bot dalam daftar anggota. Begini caranya ...

from discord import Intents
from discord.ext.commands import Bot

# Enable the default intents, then specifically enable "members".
intents = Intents.default()
intents.members = True

# Initialize the bot with our customized intents object.
bot = Bot(command_prefix='!', intents=intents)

@bot.command()
async def stats(ctx):
    # Booleans can be added up; True is 1 and False is 0.
    num_members = sum(not member.bot for member in ctx.guild.members)
    # Sending an integer is fine; we don't need to convert it to a
    # string first.
    await ctx.send(num_members)

bot.run(TOKEN)

Untuk sebagian besar bermaksud, bot Anda dapat dengan bebas memilih atau keluar dari mereka, lurus dari python. Namun, {members adalah a Intent. Untuk berlangganannya, Anda juga harus mengaktifkannya di Antarmuka Web Pengembang Discord:

Enabling members intent

0
CrazyChucky 28 Mei 2021, 21:54