diff --git a/commands/implemented/command_tts_discord.py b/commands/implemented/command_tts_discord.py new file mode 100644 index 0000000..36e0064 --- /dev/null +++ b/commands/implemented/command_tts_discord.py @@ -0,0 +1,30 @@ +from abc import ABCMeta + +from commands.command_base import AbstractCommand + +import discord +import discord.message + +class CommandTTS(AbstractCommand, metaclass=ABCMeta): + command = "!tts" + + def __init__(self): + super().__init__(CommandTTS.command, n_args=1, command_type=AbstractCommand.CommandType.DISCORD) + + async def do_command(self, bot, discord_message: discord.message): + args = self.get_args(discord_message.content) + if args[1] == "start": + print(discord_message.author.top_role) + print("start detected") + if str(discord_message.author.top_role) == "Admin": + print("Admin Check") + response = str("tts activated on %s" % discord_message.guild.name) + await bot.send_message(discord_message, response) + bot.tts_enabled = True + elif args[1] == "stop": + print("stop detected") + if str(discord_message.author.top_role) == "Admin": + print("Admin Check") + response = str("tts deactivated on %s" % discord_message.guild.name) + await bot.send_message(discord_message, response) + bot.tts_enabled = False diff --git a/config.py b/config.py index e4899e4..af48f20 100644 --- a/config.py +++ b/config.py @@ -74,7 +74,7 @@ class PollyVoices(Enum): Zhiyu = "Zhiyu" -botList = ("Nightbot", "StreamElements", "Moobot", "praxis_bot") +botList = ("Nightbot", "StreamElements", "Moobot", "praxis_bot", "MEE6 +", "Nerdy", "Rythm", "Groovy") slurList = ("fag", "faggot", "niga", "nigga", "nigger", "retard", "tard", "rtard", "coon") diff --git a/discord_script.py b/discord_script.py index f6041d0..e40cf14 100644 --- a/discord_script.py +++ b/discord_script.py @@ -48,7 +48,11 @@ class Discord_Module(discord.Client): if message.content == "//test": await message.channel.send('test response') - await self.eval_commands(message) + if not await self.isSenderBot(message): + if self.cooldownModule.isCooldownActive("discordRateLimit") == False: + await self.eval_commands(message) + await self.tts_message(message) + async def eval_commands(self, message: discord.Message): # containsURL: bool = self.contains_url(message) @@ -72,13 +76,61 @@ class Discord_Module(discord.Client): if command is not None and command.command_type is AbstractCommand.CommandType.DISCORD: await command.do_command(self, message) except Exception as e: - print(e) + # Undo the following for debug stuff + #print(e) pass # we don't care async def send_message(self, message, response): if self.cooldownModule.isCooldownActive("discordRateLimit") == False: await message.channel.send(response) self.cooldownModule.actionTrigger("discordRateLimit") + + async def tts_message(self, message: discord.Message): + if not await self.contains_slur(message): + if self.tts_enabled: + if not message.content.startswith('!'): + text_to_say: str = "%s says, %s" % (message.author.display_name, message.content) + channel_text = "%s user msg" % message.channel + + if message.author.display_name.lower() == message.channel: + tts.tts(text_to_say) + else: + # tts.tts(message.sender + " says, " + message.text) + tts.tts(text_to_say) + + # Checks for basic slurs. + async def contains_slur(self, message: discord.Message): + containsSlur: bool = False + + if await self.slur_check(message.content) or await self.slur_check(message.author.display_name): + containsSlur = True + + return containsSlur + + async def slur_check(self, text): + containsSlur: bool = False + parsedMessage = text.split(" ") + for word in parsedMessage: + for slur in config.slurList: + if word.lower() == slur: + containsSlur = True + break # we want to immediately escape if we found a slur + if containsSlur: + break + + if containsSlur: + print("<{ slur detected! }>") + #print("<{ slur detected! }> " + " [#" + message.channel + "](" + message.author.display_name + ") used a slur in chat") + return containsSlur + + # Checks if Sender is bot. + async def isSenderBot(self, message: discord.Message): + isBot = False + for bot in config.botList: + if message.author.display_name.lower() == bot.lower(): + isBot = True + print("<{ bot detected! }> ") + return isBot diff --git a/twitch_script.py b/twitch_script.py index b05ed8e..85e5598 100644 --- a/twitch_script.py +++ b/twitch_script.py @@ -75,8 +75,6 @@ class Twitch_Module(): if not self.isSenderBot(message): if self.cooldownModule.isCooldownActive("twitchChat") == False: self.eval_commands(message) - #elif message.channel == message.sender: - #self.eval_commands(message) self.tts_message(message) def eval_commands(self, message: twitch.chat.Message): @@ -101,7 +99,8 @@ class Twitch_Module(): if command is not None and command.command_type is AbstractCommand.CommandType.TWITCH: command.do_command(self, message) except Exception as e: - print(e) + # Undo the following for debug stuff + #print(e) pass # we don't care