質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.35%
Discord

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4142閲覧

Discord.pyでis_connected()とis_playing()と使用方法

Winter_1214

総合スコア11

Discord

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/30 08:52

前提・実現したいこと

Botが通話に参加していてかつ音楽を流していたら、「ボットが音楽を再生中です。」と送信してくれるものを実現したい。
is_connected()とis_playing()を使用するのは分かったが、どのようにすれば動くのかがよく分かっていないので、教えて欲しい。

該当のソースコード

python

1import discord 2from discord.ext import tasks, commands 3 4client = discord.Client() 5 6@client.event 7async def on_ready(): 8 print('ログインしました') 9 10@tasks.loop(seconds=4.0) 11async def loop(): 12 if(bot.is_connected() == True) 13 if(bot.is_playing()): 14 await channel.send('ボットが音楽を再生中です。') 15 16loop.start() 17client.run("自分のtoken")

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

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

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

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

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

guest

回答1

0

ベストアンサー

具体的にどのような挙動を期待しているのかこの文面からは把握できないので、コード例を出すことはできないのですがis_connected()is_playing()discord.VoiceClientのメソッドです。
従って discord.Guild.voice_client などで discord.VoiceClient を取得して、そこから is_connected() などを呼び出すことになります。

ところで、APIリファレンスは読まれましたか?
例えば、 is_connected() はリファレンス上でも discord.VoiceClient のメソッドとして表記されていますよ。
実装の際にはリファレンスを参照することを推奨します。

(追記)
各サーバーごとの再生中情報をIDで指定したチャンネルに送信する例です。

py

1vc_name_list = [] 2for voice_client in client.voice_clients: 3 if voice_client.guild and voice_client.is_playing(): 4 vc_name_list.append(voice_client.guild.name) 5await client.get_channel(チャンネルID).send('以下のサーバーでボットが音楽を再生中です。\n' + '\n'.join(vc_name_list))

投稿2020/06/30 14:22

編集2020/07/01 03:06
coolwind0202

総合スコア708

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

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

Winter_1214

2020/06/30 14:47

具体的には、BOTが通話に参加しているかつ音声を再生していたら、 "ボットが音楽を再生中です。"というメッセージをおくるようにしたいです。
coolwind0202

2020/06/30 15:13

is_playing() の使用方法についてはこれで十分でしょうか? > メッセージをおくるようにしたい どこへ送信したいのですか?質問のソース内には channel とありますが、これは何を示しているのですか
Winter_1214

2020/06/30 15:24

await client.get_channel(チャンネルID).send('ボットが音楽を再生中です。')でした。すみません。
coolwind0202

2020/07/01 03:06

コード例を追記しました。
Winter_1214

2020/07/01 09:49

コードの追記ありがとうございます。 コードの例を試させてもらいます。 何から何まで、してもらいすみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問