2024-02-19 18:35:44 -05:00
# _____ _
# / ____| (_)
# | (___ ___ __ _ _____ ___ _ __ ___ _ __ ___ ___ _ __
# \___ \ / _ \/ _` / __\ \ /\ / / | '_ ` _ \| '_ ` _ \ / _ \ '__|
# ____) | __/ (_| \__ \\ V V /| | | | | | | | | | | | __/ |
# |_____/ \___|\__,_|___/ \_/\_/ |_|_| |_| |_|_| |_| |_|\___|_|
import logging
from discord import Message
from discord . ext import tasks
from redbot . core import Config , commands
from redbot . core . bot import Red
class TTS ( commands . Cog ) :
""" Text to Speech through Pylav """
def __init__ ( self , bot : Red ) :
self . bot = bot
self . logger = logging . getLogger ( " red.sea.tts " )
self . config = Config . get_conf ( self , 69737245070283 , force_registration = True )
self . config . register_global (
use_google_tts = False ,
)
self . config . register_guild (
enabled_channels = [ ] ,
announce = False ,
voice_channels = True
)
self . check_pylav . start ( )
@tasks.loop ( seconds = 5 )
async def check_pylav ( self ) :
await self . bot . wait_until_red_ready ( )
pylav = self . bot . get_cog ( " PyLavPlayer " )
self . check_pylav . stop ( )
if pylav is None :
2024-02-19 18:42:13 -05:00
await self . bot . send_to_owners ( " You need to install PyLav to use the TTS cog. \n The cog has been automatically unloaded. \n See https://github.com/PyLav/Red-Cogs " )
await self . bot . remove_cog ( " TTS " )
2024-02-19 18:35:44 -05:00
raise RuntimeError ( " You need to install PyLav to use this cog. See https://github.com/PyLav/Red-Cogs " )
async def on_message ( self , message : Message ) :
if message . author . bot :
return
if message . guild is None :
return
valid_prefixes = await self . bot . get_valid_prefixes ( message . guild )
valid_prefixes . append ( " \\ " )
if any ( message . content . startswith ( prefix ) for prefix in valid_prefixes ) :
return
if message . channel . id in await self . config . guild ( message . guild ) . enabled_channels ( ) :
#TODO - add PyLav integration
return
2024-02-19 18:37:34 -05:00
#TODO - add commands for enabling/disabling channels, setting voice channel settings, and setting global settings