From a2f61d697fa2bef692a0152fa5f7ee2e60353976 Mon Sep 17 00:00:00 2001 From: SeaswimmerTheFsh Date: Mon, 19 Feb 2024 18:35:44 -0500 Subject: [PATCH] feat(tts): added new cog --- tts/__init__.py | 5 +++++ tts/info.json | 18 +++++++++++++++++ tts/tts.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 tts/__init__.py create mode 100644 tts/info.json create mode 100644 tts/tts.py diff --git a/tts/__init__.py b/tts/__init__.py new file mode 100644 index 0000000..5005024 --- /dev/null +++ b/tts/__init__.py @@ -0,0 +1,5 @@ +from .tts import TTS + + +async def setup(bot): + await bot.add_cog(TTS(bot)) diff --git a/tts/info.json b/tts/info.json new file mode 100644 index 0000000..ec2df67 --- /dev/null +++ b/tts/info.json @@ -0,0 +1,18 @@ +{ + "author" : ["SeaswimmerTheFsh (seasw.)"], + "install_msg" : "Thank you for installing TTS!\nPlease read the [documentation](https://seacogs.coastalcommits.com/tts) for more information.\nYou can find the source code of this cog [here](https://coastalcommits.com/SeaswimmerTheFsh/SeaCogs).", + "name" : "TTS", + "short" : "Text to Speech through Pylav", + "description" : "Text to Speech through Pylav", + "end_user_data_statement" : "This cog does not store end user data.", + "hidden": false, + "disabled": false, + "min_bot_version": "3.5.0", + "min_python_version": [3, 10, 0], + "tags": [ + "pylav", + "audio", + "tts" + ], + "required_cogs": {"audio" : "https://github.com/PyLav/Red-Cogs"} +} diff --git a/tts/tts.py b/tts/tts.py new file mode 100644 index 0000000..83024c1 --- /dev/null +++ b/tts/tts.py @@ -0,0 +1,53 @@ +# _____ _ +# / ____| (_) +# | (___ ___ __ _ _____ ___ _ __ ___ _ __ ___ ___ _ __ +# \___ \ / _ \/ _` / __\ \ /\ / / | '_ ` _ \| '_ ` _ \ / _ \ '__| +# ____) | __/ (_| \__ \\ 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: + 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