Working TTS on Discord

I also cleaned up tts usage in a few other places.
This commit is contained in:
Alex Orid 2020-10-20 06:12:26 -04:00
parent 5f3b3bb775
commit ce702b8b01
4 changed files with 87 additions and 6 deletions

View File

@ -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

View File

@ -74,7 +74,7 @@ class PollyVoices(Enum):
Zhiyu = "Zhiyu" 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") slurList = ("fag", "faggot", "niga", "nigga", "nigger", "retard", "tard", "rtard", "coon")

View File

@ -48,7 +48,11 @@ class Discord_Module(discord.Client):
if message.content == "//test": if message.content == "//test":
await message.channel.send('test response') await message.channel.send('test response')
if not await self.isSenderBot(message):
if self.cooldownModule.isCooldownActive("discordRateLimit") == False:
await self.eval_commands(message) await self.eval_commands(message)
await self.tts_message(message)
async def eval_commands(self, message: discord.Message): async def eval_commands(self, message: discord.Message):
# containsURL: bool = self.contains_url(message) # containsURL: bool = self.contains_url(message)
@ -72,7 +76,8 @@ class Discord_Module(discord.Client):
if command is not None and command.command_type is AbstractCommand.CommandType.DISCORD: if command is not None and command.command_type is AbstractCommand.CommandType.DISCORD:
await command.do_command(self, message) await command.do_command(self, message)
except Exception as e: except Exception as e:
print(e) # Undo the following for debug stuff
#print(e)
pass # we don't care pass # we don't care
async def send_message(self, message, response): async def send_message(self, message, response):
@ -80,6 +85,53 @@ class Discord_Module(discord.Client):
await message.channel.send(response) await message.channel.send(response)
self.cooldownModule.actionTrigger("discordRateLimit") 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

View File

@ -75,8 +75,6 @@ class Twitch_Module():
if not self.isSenderBot(message): if not self.isSenderBot(message):
if self.cooldownModule.isCooldownActive("twitchChat") == False: if self.cooldownModule.isCooldownActive("twitchChat") == False:
self.eval_commands(message) self.eval_commands(message)
#elif message.channel == message.sender:
#self.eval_commands(message)
self.tts_message(message) self.tts_message(message)
def eval_commands(self, message: twitch.chat.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: if command is not None and command.command_type is AbstractCommand.CommandType.TWITCH:
command.do_command(self, message) command.do_command(self, message)
except Exception as e: except Exception as e:
print(e) # Undo the following for debug stuff
#print(e)
pass # we don't care pass # we don't care