56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
# _____ _
|
|
# / ____| (_)
|
|
# | (___ ___ __ _ _____ ___ _ __ ___ _ __ ___ ___ _ __
|
|
# \___ \ / _ \/ _` / __\ \ /\ / / | '_ ` _ \| '_ ` _ \ / _ \ '__|
|
|
# ____) | __/ (_| \__ \\ 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:
|
|
await self.bot.send_to_owners("You need to install PyLav to use the TTS cog.\nThe cog has been automatically unloaded.\nSee https://github.com/PyLav/Red-Cogs")
|
|
await self.bot.remove_cog("TTS")
|
|
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
|
|
|
|
#TODO - add commands for enabling/disabling channels, setting voice channel settings, and setting global settings
|