Search code examples
pythondiscorddiscord.pynextcord

How to get count of all members in all voice channels discord.py


I tried to do this

voicemembers_ = []
for v in ctx.guild.voice_channels:
    voicemembers_.append(v.members)

voicemembers = voicemembers_
print(voicemembers)[0]

when wanted to find all members in all voice channels but I have 0 in terminal but in the server I have 10+ members also I delete [0] and add print statement and find this

[[], [], [], [], [], [], [<Member id=481824139133321218 name='Не ебался 15 лет' discriminator='3598' bot=False nick='M1sT' guild=<Guild id=938540650209615953 name='Ghost Side' shard_id=0 chunked=True member_count=345>>, <Member id=509012843329486860 name='Wolfemor' discriminator='2311' bot=False nick=None guild=<Guild id=938540650209615953 name='Ghost Side' shard_id=0 chunked=True member_count=345>>, <Member id=530380443577483264 name='Arkul' discriminator='8151' bot=False nick=None guild=<Guild id=938540650209615953 name='Ghost Side' shard_id=0 chunked=True member_count=345>>, <Member id=938530532541751476 name='Gluko' discriminator='1219' bot=False nick='Стримлер' guild=<Guild id=938540650209615953 name='Ghost Side' shard_id=0 chunked=True member_count=345>>], [], [], [], [], [], [], [], [], [], [], [<Member id=287215916817842188 name='ap0sstal' discriminator='6526' bot=False nick='ap0sstal(p0n1m3(Серж))' guild=<Guild id=938540650209615953 name='Ghost Side' shard_id=0 chunked=True member_count=345>>, <Member id=371699181741539329 name='ArtemKKKa' discriminator='5882' bot=False nick='666' guild=<Guild id=938540650209615953 name='Ghost Side' shard_id=0 chunked=True member_count=345>>], [], [], [<Member id=286883614921326594 name='321' discriminator='9099' bot=False nick='Aizen' guild=<Guild id=938540650209615953 name='Ghost Side' shard_id=0 chunked=True member_count=345>>, <Member id=485010706316656640 name='G1R0' discriminator='7773' bot=False nick=None guild=<Guild id=938540650209615953 name='Ghost Side' shard_id=0 chunked=True member_count=345>>, <Member id=576859761434296344 name='Aleg(tilt)' discriminator='5562' bot=False nick=None guild=<Guild id=938540650209615953 name='Ghost Side' shard_id=0 chunked=True member_count=345>>], []]

Solution

  • You can use sets, which are fast, can be counted easily, and will also automatically filter out any duplicated members.

    voice = set()
    for v in ctx.guild.voice_channels:
        for member in v.members:
            voice.add(member.id)
    

    Then, you can get the total number by doing len(voice). You can also iterate over all of the members if you want to do anything to it.