🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

1794閲覧

ボイスチャンネルに接続している人の中からランダムにDMを送信

mxrs2

総合スコア3

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/01/17 04:05

前提・実現したいこと

Disocrdでコマンド送信者が参加しているボイスチャンネル(例:一般)に参加している人の中からランダムにDMを送信したいです。
ボイスチャンネルの参加者を取得することはできましたが、その中からランダムでDMを送る処理がうまくいきません。

async def test(self, ctx): msg = 'test message' state = ctx.author.voice if state is None: return False self.channel_mem = [i.name for i in state.channel.members] #await client.send_message(random.choice(self.channel_mem), msg) return True

random.choiceでchannnel_memの中からランダムで抽選してDMを送ろうかと思いましたが、DMを送る方法がわかりません。
そもそもstate.channel.membersで取得したメンバーリストの情報でDMを送れるのでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Member.sendでDMを送信できます。

python

1await random.choice(state.channel.members).send(msg)

投稿2021/01/17 04:22

編集2021/01/17 09:55
sevenc-nanashi

総合スコア643

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mxrs2

2021/01/17 08:35

ありがとうございます おそらくstate.channel.membersで取得したメンバー情報ではダメっぽいですね ボイスチャンネルに参加しているメンバーのIDが取得できればいけそうですが...
sevenc-nanashi

2021/01/17 08:45

いえ、逆にMemberオブジェクトではないといけません。 await random.choice(state.channel.members).send(msg) のはずです
mxrs2

2021/01/17 09:54

Command raised an exception: AttributeError: 'str' object has no attribute 'send'のエラーが出ますね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問