コード自体はかんたんだったんですけど、ちょっとだけハマったのでメモ。
members = [i.name for i in message.author.voice.channel.members]
これでmembers
変数にVCにINしているメンバーが入ってきます。
例えば組分けしたい場合は、
members = [i.name for i in message.author.voice.channel.members]
random.shuffle(members)
party_num = 2
team = []
# チーム分け
for i in range(party_num):
team.append("=====チーム"+str(i+1)+"=====")
team.extend(members[i:len(members):party_num])
print ('\n'.join(team))
こうすることで、
=====チーム1=====
homo
チャット
reaper
ana
=====チーム2=====
traser
mac
sol
buri
と出力ができるはずです。
ハマったこと(この記事で伝えたいのはむしろこっち)
botが起動しているときにVCにいるメンバーは取得できたんですけど、VCからメンバーが抜けても、なぜかbot上そのメンバーはまだVCにいるという形で取得してしまっていました。
どの記事でもそれについて書かれていなかったのですが、インテントという言葉を見かけたので「もしかして」ということで、
#intents = discord.Intents(messages=True, guilds=True, members=True, reactions=True) #before
intents=discord.Intents.all() # after
こうしたら行けました。
※具体的にどう設定すればいいかわからなかったのでall()
で。
参考:
https://qiita.com/disneyresidents/items/72741a88265107dd04d3