1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【discord.py】VCに入ってるメンバーの一覧を取得する方法【python】

Posted at

コード自体はかんたんだったんですけど、ちょっとだけハマったのでメモ。

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?