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

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

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

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

Python

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

Q&A

解決済

1回答

1575閲覧

すべてのコメントを順番通りに読み上げさせたい

fruct

総合スコア1

Discord

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

Python

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

0グッド

0クリップ

投稿2021/04/29 10:10

編集2021/04/29 10:25

pythonでdiscordのテキストをボイスチャットで読み上げるボットを作成しました。
下記のコードでチャンネルで入力された文字を読み上げしてくれているのですが、同時に複数のテキストが入力された場合読み上げが中断されてしまいます。
すべてのコメントを順番通りに読み上げさせたいのですがどうしたらいいでしょうか?

該当のソースコード

python

1@client.event 2async def on_message(message): 3 global channelid, namedtoggle 4 if message.author.bot: 5 return 6 7 if message.content.startswith('.'): 8 pass 9 elif channelid != message.channel.id: 10 pass 11 else: 12 if message.guild.voice_client: 13 text = message.content 14 creat_WAV(text) 15 source = discord.FFmpegPCMAudio(source="output.wav") 16 message.guild.voice_client.play(source) 17 else: 18 pass 19 await client.process_commands(message)

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

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

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

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

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

sevenc-nanashi

2021/04/29 10:13

コードブロックで囲って下さい(```python~```)
guest

回答1

0

ベストアンサー

discord.py では仕様上再生中にまた再生しようとすると例外が発生するようになっています。もし順番通りに再生させる仕様にするのならば threading と queue を使って順番待ちのテキストをためておく仕組みが必要になります。グローバル変数にキューを作り、メッセージをキューに溜め、キューから取り出して音声を再生するスレッドを作ればよいかと思います。ちょっと難しいですがキーワードを頼りに調べてみてください。

投稿2021/04/30 01:20

A_kirisaki

総合スコア2853

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

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

fruct

2021/04/30 09:15 編集

φ(゚Д゚ )フムフム… とりあえず下記のコードを追加し再生中に再生しないようにはできました。(順番通りには再生されないが) ``` while message.guild.voice_client.is_playing(): await asyncio.sleep(1) ``` threadingとqueueは頑張って勉強してみます。 ありがとうございましたー!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問