前提・実現したいこと
前提
・Discord.pyとGoogleのTextToSpeechを使った読み上げBOTを作成中
・Python初心者
・参考にしたサイト(https://my-pon.hatenablog.com/entry/2020/12/23/000000)
実現したいこと
・複数サーバーでの利用を想定しているためチャンネルIDを指定する方法をとりたくない。(ただし同時利用はしない)
・BOTへのDMを無視。
・ボイスチャンネルに接続するときに入力したテキストチャンネル以外のを無視するようにしたい。
・BOTを切断したときにその無視を解除する。
発生している問題・エラーメッセージ
・サーバーに複数のテキストチャンネルがある場合、どのテキストチャンネルに入力された言葉でもを読んでしまう。
・BOTへのDMやサーバーAのテキストチャンネルで入力された言葉をサーバーBのボイスチャンネルで読んでしまう
該当のソースコード
python
1#coding:utf-8 2import requests 3import discord 4import html 5from discord.client import Client 6from discord.channel import VoiceChannel 7from discord.player import FFmpegPCMAudio 8from google.cloud import texttospeech 9 10TOKEN = "ここにトークン" 11client = discord.Client() 12voiceChannel:VoiceChannel 13 14@client.event 15async def on_ready(): 16 print('Login!!') 17@client.event 18@client.event 19async def on_message(message): 20 global voiceChannel 21 22 if message.author == client.user: 23 return 24 25 elif message.content == '!!join': 26 if message.author.voice is None: 27 await message.channel.send('接続していません') 28 voiceChannel=await VoiceChannel.connect(message.author.voice.channel) 29 await message.channel.send('参加しました!') 30 return 31 32 elif message.content == '!!bye': 33 if message.author.voice is None: 34 await message.channel.send('接続していません') 35 voiceChannel.stop() 36 await message.channel.send('退出しました!') 37 await voiceChannel.disconnect() 38 return 39 40 play_voice(message.content) 41---読み上げ部分なので割愛--- 42 client.run(TOKEN)
試したこと
接続時のテキストチャンネルのChannelIDを取得し、文字列が入力されたテキストチャンネルのChannelIDと比較し一致するなら読み上げの処理に入るといった方法を考えたが、記入する方法がわからなかったので調べても取得する方法の情報が出てこなかった。
補足情報(FW/ツールのバージョンなど)
Windows10Home
Visual Studio Code
Python3.9.7 64-bit
Discord.py v1.7.3
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。