LoginSignup
4
1

More than 1 year has passed since last update.

discord.pyでボイスチャンネルにいるメンバーを取得する

Posted at

ボイスチャンネルにいるメンバーを取得する方法について色々とたらい回しにされたので参考までに書いておきます。

vch = client.get_channel(チャンネルid)

としているとき

vch.voice_states.keys()

でメンバーの一覧を取得できます。


もちろん、

for member in vch.voice_states.keys():

とすることで、メンバー各々に対しての処理を行えます。


作成したdiscordbotから抜粋です。
      vch = client.get_channel(vid)
      memlist = []
      if vch is not None:
        if len(vch.voice_states.keys()) == 0:
          return
        for member in vch.voice_states.keys():
            memlist.append(member)
        ram = random.randrange(len(memlist))
        user = await client.fetch_user(int(memlist[ram]))
        if user.bot:
            await channel.send('夜が明けました。昨晩の犠牲者は、いませんでした')
        else:
            person = '<@!'+str(memlist[ram])+'>'
            await channel.send(f'本日処刑される人は{person}さんになりました。{person}さんは幽霊となって、以後は発言をせずにゲームを傍観してください.') 

ここでは取得したユーザーがbotかどうかを判定しています。
MusicBotなどがボイスチャンネルにいる場合があるからです。

        user = await client.fetch_user(int(memlist[ram]))
        if user.bot:

誰かの何かのお役に立てれば...
4
1
1

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
4
1