Merge pull request 'master updates' (#26) from master into db-module

Reviewed-on: #26
This commit is contained in:
alex_orid 2021-04-16 02:08:25 +00:00
commit 5b2613f9be
27 changed files with 331 additions and 71 deletions

1
.gitignore vendored
View File

@ -3,3 +3,4 @@ tts/
__pycache__/ __pycache__/
credentials/ credentials/
.idea/ .idea/
stream_sources/chyron.txt

10
Dockerfile Normal file
View File

@ -0,0 +1,10 @@
FROM python:3.8-buster
WORKDIR /Praxis
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
CMD [ "python3", "main.py"] #Uncomment to start with the Docker Container

View File

@ -2,6 +2,18 @@ A chatbot to help with live stream production and effects.
___ ___
# Docker:
## Docker Info:
Currently to build the container run the following command.
`docker create -p 2501:2501 -e ISDOCKER=cat --name praxis praxis`
To start the bot with **User_Module** activated use this.
`docker exec -ti praxis python3 main.py`
# Credentials: # Credentials:
## Credentials Setup: ## Credentials Setup:

View File

@ -16,7 +16,7 @@ class Chyron_Module():
self.addItem( self.addItem(
"WeekDays", "WeekDays",
"► Weekdays: ", "► Weekdays: ",
"Daily Stream @ 12pm Noon EST") "Daily Streams @ 12pm Noon EST")
self.addItem( self.addItem(
"FriSat", "FriSat",
"► Friday & Saturday: ", "► Friday & Saturday: ",

View File

@ -18,10 +18,11 @@ class AbstractCommand(metaclass=ABCMeta):
TWITCH = auto() TWITCH = auto()
DISCORD = auto() DISCORD = auto()
def __init__(self, command: str, n_args: int = 0, command_type=CommandType.NONE): def __init__(self, command: str, n_args: int = 0, command_type=CommandType.NONE, helpText:list=["No Help"]):
self.command = command self.command = command
self.n_args = n_args self.n_args = n_args
self.command_type = command_type self.command_type = command_type
self.help = helpText
# no touch! # no touch!
def get_args(self, text: str) -> list: def get_args(self, text: str) -> list:
@ -31,6 +32,10 @@ class AbstractCommand(metaclass=ABCMeta):
def get_command(self) -> str: def get_command(self) -> str:
return self.command return self.command
# no touch!
def get_help(self):
return self.help
@abstractmethod @abstractmethod
def do_command(self, bot, twitch_message): def do_command(self, bot, twitch_message):
pass pass

View File

@ -7,14 +7,16 @@ import random
import utilities_script as utilities import utilities_script as utilities
class CommandRoll(AbstractCommand, metaclass=ABCMeta): class CommandChyron(AbstractCommand, metaclass=ABCMeta):
""" """
this is the roll command. this is the chyron command.
""" """
command = "chyron" command = "chyron"
def __init__(self): def __init__(self):
super().__init__(CommandRoll.command, n_args=5, command_type=AbstractCommand.CommandType.Praxis) super().__init__(CommandChyron.command, n_args=5, command_type=AbstractCommand.CommandType.Praxis)
self.help = ["The chyron string can be generated and updated with this command.",
"\nExample:","chyron update \"RIGHTNOW\""]
def do_command(self, bot, user_message): def do_command(self, bot, user_message):
tempBool = True tempBool = True
@ -22,14 +24,24 @@ class CommandRoll(AbstractCommand, metaclass=ABCMeta):
tempParsedMessage = user_message.message.split(" ") tempParsedMessage = user_message.message.split(" ")
i = len(tempParsedMessage) i = len(tempParsedMessage)
if i > 1: if i > 2:
if "update" in tempParsedMessage[1]: if "update" in tempParsedMessage[1]:
chyron = chyron_module.Chyron_Module() chyron = chyron_module.Chyron_Module()
if i > 2: if i > 2:
chyron.main(tempParsedMessage[2]) rightNow = ""
counter = 0
for word in tempParsedMessage:
if counter > 1:
rightNow = rightNow + word + " "
counter = counter + 1
rightNow = rightNow[:-1]
chyron.main(rightNow)
else: else:
chyron.main() chyron.main()
chyron.updateChyronFile() chyron.updateChyronFile()
returnMessage = "@" + user_message.user + " updated the chyron!" returnMessage = "@" + user_message.user + " updated the chyron!"
bot.return_message(returnMessage) bot.return_message(returnMessage)
def get_help(self):
return self.help

View File

@ -0,0 +1,48 @@
from abc import ABCMeta
import help_module
from commands.command_base import AbstractCommand
import random
import utilities_script as utilities
class CommandChyron(AbstractCommand, metaclass=ABCMeta):
"""
this is the help command.
"""
command = "help"
def __init__(self):
super().__init__(CommandChyron.command, n_args=5, command_type=AbstractCommand.CommandType.Praxis)
self.help = ["This is a command to learn more about other commands.",
"\nExample:","help \"COMMAND\""]
self.blockDecor = "\n================================================================\n"
def do_command(self, bot, user_message):
tempBool = True
if tempBool == True:
tempParsedMessage = user_message.message.split(" ")
i = len(tempParsedMessage)
if i > 1:
targetCommand = bot.commands[tempParsedMessage[1]]
helper = help_module.Help_Module_.help_command_response(targetCommand, help_module.help_command_responseType.fancy)
returnMessage = helper.response
bot.return_message(returnMessage)
elif i == 1:
commandsList = self.blockDecor + "Commands List:" + self.blockDecor + self.GetCommandsList(bot) + self.blockDecor
print(commandsList)
def GetCommandsList(self, bot):
commandsList = ""
i = 0
for cmd in bot.commands:
commandsList = commandsList + cmd + "\n"
return commandsList
def get_help(self):
return self.help

View File

@ -7,14 +7,16 @@ import random
import utilities_script as utilities import utilities_script as utilities
class CommandRoll(AbstractCommand, metaclass=ABCMeta): class CommandLights(AbstractCommand, metaclass=ABCMeta):
""" """
this is the roll command. this is the lights command.
""" """
command = "lights" command = "lights"
def __init__(self): def __init__(self):
super().__init__(CommandRoll.command, n_args=3, command_type=AbstractCommand.CommandType.Praxis) super().__init__(CommandLights.command, n_args=3, command_type=AbstractCommand.CommandType.Praxis)
self.help = ["This command allows you to modify the lights via the Lights_Module.",
"\nExample:","lights \"SCENE\"","lights \"COLOR\"","lights \"R\" \"G\" \"B\"","lights \"1\" \"0.5\" \"0\""]
def do_command(self, bot, user_message): def do_command(self, bot, user_message):
tempBool = True tempBool = True
@ -65,3 +67,6 @@ class CommandRoll(AbstractCommand, metaclass=ABCMeta):
returnMessage = "@" + user_message.user + " changed the light's color!" returnMessage = "@" + user_message.user + " changed the light's color!"
bot.return_message(returnMessage) bot.return_message(returnMessage)
def get_help(self):
return self.help

View File

@ -7,14 +7,16 @@ import random
import utilities_script as utilities import utilities_script as utilities
class CommandRoll(AbstractCommand, metaclass=ABCMeta): class CommandLights(AbstractCommand, metaclass=ABCMeta):
""" """
this is the roll command. this is the roll command.
""" """
command = "!lights" command = "!lights"
def __init__(self): def __init__(self):
super().__init__(CommandRoll.command, n_args=3, command_type=AbstractCommand.CommandType.TWITCH) super().__init__(CommandLights.command, n_args=3, command_type=AbstractCommand.CommandType.TWITCH)
self.help = ["This command allows you to modify the lights via the Lights_Module.",
"\nExample:","!lights \"SCENE\"","!lights \"COLOR\"","!lights \"R\" \"G\" \"B\"","!lights \"1\" \"0.5\" \"0\""]
def do_command(self, bot, twitch_message): def do_command(self, bot, twitch_message):
@ -65,3 +67,6 @@ class CommandRoll(AbstractCommand, metaclass=ABCMeta):
returnMessage = "@" + twitch_message.sender + " changed the light's color!" returnMessage = "@" + twitch_message.sender + " changed the light's color!"
bot.send_message(returnMessage) bot.send_message(returnMessage)
def get_help(self):
return self.help

View File

@ -12,6 +12,8 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
def __init__(self): def __init__(self):
super().__init__(CommandTTS.command, n_args=0, command_type=AbstractCommand.CommandType.DISCORD) super().__init__(CommandTTS.command, n_args=0, command_type=AbstractCommand.CommandType.DISCORD)
self.help = ["MISSING HELP ENTRY",
"\nExample:","command \"PARAM\""]
async def do_command(self, bot, discord_message: discord.message): async def do_command(self, bot, discord_message: discord.message):
@ -21,3 +23,6 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
response = str("Bot restarting...") response = str("Bot restarting...")
await bot.send_message(discord_message, response) await bot.send_message(discord_message, response)
utilities.restart_self() utilities.restart_self()
def get_help(self):
return self.help

View File

@ -9,6 +9,8 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
def __init__(self): def __init__(self):
super().__init__(CommandTTS.command, n_args=0, command_type=AbstractCommand.CommandType.TWITCH) super().__init__(CommandTTS.command, n_args=0, command_type=AbstractCommand.CommandType.TWITCH)
self.help = ["MISSING HELP ENTRY",
"\nExample:","command \"PARAM\""]
def do_command(self, bot, twitch_message): def do_command(self, bot, twitch_message):
args = self.get_args(twitch_message.text) args = self.get_args(twitch_message.text)
@ -16,3 +18,5 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
bot.send_message("Bot restarting...") bot.send_message("Bot restarting...")
utilities.restart_self() utilities.restart_self()
def get_help(self):
return self.help

View File

@ -18,6 +18,8 @@ class CommandRoll(AbstractCommand, metaclass=ABCMeta):
def __init__(self): def __init__(self):
super().__init__(CommandRoll.command, n_args=1, command_type=AbstractCommand.CommandType.DISCORD) super().__init__(CommandRoll.command, n_args=1, command_type=AbstractCommand.CommandType.DISCORD)
self.help = ["MISSING HELP ENTRY",
"\nExample:","command \"PARAM\""]
async def do_command(self, bot, discord_message: discord.Message): async def do_command(self, bot, discord_message: discord.Message):
print("!roll Detected") print("!roll Detected")
@ -173,3 +175,6 @@ class CommandRoll(AbstractCommand, metaclass=ABCMeta):
print(diceRoll) print(diceRoll)
return diceRoll return diceRoll
def get_help(self):
return self.help

View File

@ -12,6 +12,8 @@ class CommandRoll(AbstractCommand, metaclass=ABCMeta):
def __init__(self): def __init__(self):
super().__init__(CommandRoll.command, n_args=1, command_type=AbstractCommand.CommandType.TWITCH) super().__init__(CommandRoll.command, n_args=1, command_type=AbstractCommand.CommandType.TWITCH)
self.help = ["MISSING HELP ENTRY",
"\nExample:","command \"PARAM\""]
def do_command(self, bot, twitch_message): def do_command(self, bot, twitch_message):
print("!roll Detected") print("!roll Detected")
@ -166,3 +168,6 @@ class CommandRoll(AbstractCommand, metaclass=ABCMeta):
print(diceRoll) print(diceRoll)
return diceRoll return diceRoll
def get_help(self):
return self.help

View File

@ -12,6 +12,8 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
def __init__(self): def __init__(self):
super().__init__(CommandTTS.command, n_args=0, command_type=AbstractCommand.CommandType.DISCORD) super().__init__(CommandTTS.command, n_args=0, command_type=AbstractCommand.CommandType.DISCORD)
self.help = ["MISSING HELP ENTRY",
"\nExample:","command \"PARAM\""]
async def do_command(self, bot, discord_message: discord.message): async def do_command(self, bot, discord_message: discord.message):
@ -21,3 +23,6 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
response = str("Bot shutting down...") response = str("Bot shutting down...")
await bot.send_message(discord_message, response) await bot.send_message(discord_message, response)
utilities.hard_shutdown() utilities.hard_shutdown()
def get_help(self):
return self.help

View File

@ -9,6 +9,8 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
def __init__(self): def __init__(self):
super().__init__(CommandTTS.command, n_args=0, command_type=AbstractCommand.CommandType.TWITCH) super().__init__(CommandTTS.command, n_args=0, command_type=AbstractCommand.CommandType.TWITCH)
self.help = ["MISSING HELP ENTRY",
"\nExample:","command \"PARAM\""]
def do_command(self, bot, twitch_message): def do_command(self, bot, twitch_message):
args = self.get_args(twitch_message.text) args = self.get_args(twitch_message.text)
@ -16,3 +18,5 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
bot.send_message("Bot shutting down...") bot.send_message("Bot shutting down...")
utilities.hard_shutdown() utilities.hard_shutdown()
def get_help(self):
return self.help

View File

@ -11,7 +11,12 @@ class CommandTest(AbstractCommand, metaclass=ABCMeta):
def __init__(self): def __init__(self):
super().__init__(CommandTest.command, command_type=AbstractCommand.CommandType.TWITCH) super().__init__(CommandTest.command, command_type=AbstractCommand.CommandType.TWITCH)
self.help = ["MISSING HELP ENTRY",
"\nExample:","command \"PARAM\""]
def do_command(self, bot, twitch_message): def do_command(self, bot, twitch_message):
print("!test Detected") print("!test Detected")
bot.send_message("testing acknowledged") bot.send_message("testing acknowledged")
def get_help(self):
return self.help

View File

@ -10,6 +10,8 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
def __init__(self): def __init__(self):
super().__init__(CommandTTS.command, n_args=1, command_type=AbstractCommand.CommandType.DISCORD) super().__init__(CommandTTS.command, n_args=1, command_type=AbstractCommand.CommandType.DISCORD)
self.help = ["MISSING HELP ENTRY",
"\nExample:","command \"PARAM\""]
async def do_command(self, bot, discord_message: discord.message): async def do_command(self, bot, discord_message: discord.message):
args = self.get_args(discord_message.content) args = self.get_args(discord_message.content)
@ -28,3 +30,6 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
response = str("tts deactivated on %s" % discord_message.guild.name) response = str("tts deactivated on %s" % discord_message.guild.name)
await bot.send_message(discord_message, response) await bot.send_message(discord_message, response)
bot.tts_enabled = False bot.tts_enabled = False
def get_help(self):
return self.help

View File

@ -9,6 +9,8 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
def __init__(self): def __init__(self):
super().__init__(CommandTTS.command, n_args=1, command_type=AbstractCommand.CommandType.TWITCH) super().__init__(CommandTTS.command, n_args=1, command_type=AbstractCommand.CommandType.TWITCH)
self.help = ["MISSING HELP ENTRY",
"\nExample:","command \"PARAM\""]
def do_command(self, bot, twitch_message): def do_command(self, bot, twitch_message):
args = self.get_args(twitch_message.text) args = self.get_args(twitch_message.text)
@ -20,3 +22,6 @@ class CommandTTS(AbstractCommand, metaclass=ABCMeta):
if twitch_message.sender.lower() == twitch_message.channel: if twitch_message.sender.lower() == twitch_message.channel:
bot.send_message("tts deactivated on #%s" % twitch_message.channel) bot.send_message("tts deactivated on #%s" % twitch_message.channel)
bot.tts_enabled = False bot.tts_enabled = False
def get_help(self):
return self.help

View File

@ -5,8 +5,8 @@ credentialsNickname = "praxis_bot"
twitch_module: bool = False twitch_module: bool = False
discord_module: bool = False discord_module: bool = False
test_module: bool = False test_module: bool = False
user_module: bool = True
autoJoin_TwitchChannels = ["thecuriousnerd"] autoJoin_TwitchChannels = ["thecuriousnerd"]
whitelisted_TwitchPowerUsers = ["thecuriousnerd"] whitelisted_TwitchPowerUsers = ["thecuriousnerd"]
@ -30,8 +30,8 @@ block_DiscordChannelsMessaging = [""] # Blocks the ability to send messages to D
blockAll_DiscordChannelsMessaging = False # Blocks the ability to send messages to Discord channels blockAll_DiscordChannelsMessaging = False # Blocks the ability to send messages to Discord channels
blockAll_DiscordPrivateMessaging = False # Private Messaging not yet implemented blockAll_DiscordPrivateMessaging = False # Private Messaging not yet implemented
selected_DiscordTTSChannels = ["431129571308339210"]
autoEnabled_DiscordChannelsTTS = False autoEnabled_DiscordChannelsTTS = False
selected_DiscordTTSChannels = ["431129571308339210"]
block_DiscordChannelsTTS = [""] # block supersedes the tts_enabled bool block_DiscordChannelsTTS = [""] # block supersedes the tts_enabled bool
blockAll_DiscordChannelsTTS = False # blockAll supersedes the force bool and force list and tts_enabled bool blockAll_DiscordChannelsTTS = False # blockAll supersedes the force bool and force list and tts_enabled bool
force_DiscordChannelsTTS = [""] # force supersedes the block list force_DiscordChannelsTTS = [""] # force supersedes the block list
@ -41,10 +41,12 @@ blockAll_TTS_URL_Discord = True
autoEnabled_Discord_rgbLightControl = False autoEnabled_Discord_rgbLightControl = False
#User Module Configs
blockAll_TTS_URL_UserModule = True
#Chyron Module Configs #Chyron Module Configs
chyronListSpaceCount = 25 chyronListSpaceCount = 25
#Lights Module Configs #Lights Module Configs
colorParse_maxDigits = 4 colorParse_maxDigits = 4

View File

@ -138,7 +138,13 @@ class Discord_Module(discord.Client):
#print("isBlocked: " + str(isBlocked)) #print("isBlocked: " + str(isBlocked))
#print("isForced: " + str(isForced)) #print("isForced: " + str(isForced))
if (not await self.contains_slur(message)) and (await self.isTTS_URL_Enabled(message)): if (not await self.contains_slur(message)) and (await self.isTTS_URL_Enabled(message)):
if self.tts_enabled and not isBlocked and not config.blockAll_DiscordChannelsTTS or isForced or config.forceAll_DiscordChatChannelsTTS: print(message.channel.id, message.channel.id, message.channel.id)
isMessageChannelInList = False
for TTS_C_id in config.selected_DiscordTTSChannels:
print(TTS_C_id)
if int(TTS_C_id) == int(message.channel.id):
isMessageChannelInList = True
if self.tts_enabled and (isMessageChannelInList) and not isBlocked and not config.blockAll_DiscordChannelsTTS or isForced or config.forceAll_DiscordChatChannelsTTS:
if not message.content.startswith('!'): if not message.content.startswith('!'):
text_to_say: str = "%s says, %s" % (message.author.display_name, message.content) text_to_say: str = "%s says, %s" % (message.author.display_name, message.content)
channel_text = "%s user msg" % message.channel channel_text = "%s user msg" % message.channel

73
help_module.py Normal file
View File

@ -0,0 +1,73 @@
from commands.command_base import AbstractCommand
from enum import Enum
import config as config
import db
import commands.loader as command_loader
import credentials
class Help_Module():
def __init__(self):
super().__init__()
#self.dbCredential: credentials.DB_Credential
def main(self):
print("[Help Module]> help test")
def help_command_response(self, command:AbstractCommand, responseType):
response = help_command_response()
response.setup(command, responseType)
response.makeResponse()
return response
class help_command_responseType(Enum):
plain = 1 # One line response
fancy = 2 # Fancy formatted response
class help_command_response():
def __init__(self):
super().__init__()
self.command = None
self.commandName = ""
self.helpText = ""
self.response = ""
self.responseType = help_command_responseType.plain
self.blockDecor = "\n================================================================\n"
def setup(self, command, responseType):
self.command = command
self.commandName = command.command
self.responseType = responseType
def makeResponse(self):
if self.responseType == help_command_responseType.plain:
self.response_plain()
elif self.responseType == help_command_responseType.fancy:
self.response_fancy()
def response_plain(self):
tempHelpText = ""
for line in self.command.help:
tempHelpText = tempHelpText + line + " "
self.response = "Command: " + self.commandName + " : " + self.helpText
return self.response
def response_fancy(self):
tempHelpText = ""
for line in self.command.help:
tempHelpText = tempHelpText + line + "\n"
self.response = self.blockDecor + "Command: " + self.commandName + self.blockDecor + tempHelpText + self.blockDecor
return self.response
Help_Module_ = Help_Module()
if __name__ == "__main__":
testModule = Help_Module()
#credentials_manager = credentials.Credentials_Module()
#credentials_manager.load_credentials()
#testModule.dbCredential = credentials_manager.find_DB_Credential(config.credentialsNickname)
testModule.main()

23
main.py
View File

@ -6,9 +6,10 @@ import time
import twitch_script import twitch_script
import discord_script import discord_script
import test_module import test_module
import user_module
import utilities_script as utility import utilities_script as utility
import config as config import config as config
@ -19,6 +20,7 @@ import threading
twitchModule_: twitch_script.Twitch_Module twitchModule_: twitch_script.Twitch_Module
discordModule_: discord_script.Discord_Module discordModule_: discord_script.Discord_Module
testModule_: test_module.Test_Module testModule_: test_module.Test_Module
userModule_: user_module.User_Module
credentials_manager: credentials.Credentials_Module credentials_manager: credentials.Credentials_Module
@ -34,8 +36,9 @@ def twitch_module_init(dbCert, twitchCert):
twitchModule_.tts_enabled = config.autoEnabled_TwitchChannelsTTS twitchModule_.tts_enabled = config.autoEnabled_TwitchChannelsTTS
twitchModule_.whitelisted_users = config.whitelisted_TwitchPowerUsers twitchModule_.whitelisted_users = config.whitelisted_TwitchPowerUsers
print("[TWITCH Module]>", "Loading Channels...")
for twitchChannel in config.autoJoin_TwitchChannels: for twitchChannel in config.autoJoin_TwitchChannels:
print("joining channel function") print("joining twitch channel:", twitchChannel)
twitchModule_.join_channel(None, twitchChannel) twitchModule_.join_channel(None, twitchChannel)
def discord_module_init(dbCert, discordCert): def discord_module_init(dbCert, discordCert):
@ -55,20 +58,28 @@ def test_module_init(dbCert, Empty):
#testModule_.dbCredential = dbCert #testModule_.dbCredential = dbCert
testModule_.main() testModule_.main()
def user_module_init(dbCert, Empty):
print("-init [USER Module]")
userModule_.dbCredential = dbCert
userModule_.main()
def thread_main(): def thread_main():
if utility.isRunningInDocker() == True:
print("<[DOCKER Detected]>")
if not config.skip_splashScreen: if not config.skip_splashScreen:
utility.splashScreen() utility.splashScreen()
global credentials_manager global credentials_manager
global twitchModule_ global twitchModule_
global discordModule_ global discordModule_
global testModule_ global testModule_
global userModule_
credentials_manager = credentials.Credentials_Module() credentials_manager = credentials.Credentials_Module()
twitchModule_ = twitch_script.Twitch_Module() twitchModule_ = twitch_script.Twitch_Module()
discordModule_ = discord_script.Discord_Module() discordModule_ = discord_script.Discord_Module()
testModule_ = test_module.Test_Module() testModule_ = test_module.Test_Module()
userModule_ = user_module.User_Module()
credentials_manager.load_credentials() credentials_manager.load_credentials()
dbCert: credentials.DB_Credential = credentials_manager.find_Credential(credentials.DB_Credential, config.credentialsNickname) dbCert: credentials.DB_Credential = credentials_manager.find_Credential(credentials.DB_Credential, config.credentialsNickname)
@ -91,11 +102,19 @@ def thread_main():
threads.append(thread_) threads.append(thread_)
thread_.start() thread_.start()
if config.user_module == True:
if utility.isRunningInDocker() == False:
config.user_module = False
thread_ = threading.Thread(target=user_module_init, args=(dbCert, None))
threads.append(thread_)
thread_.start()
print("---Post Thread Creation Test---") print("---Post Thread Creation Test---")
for t in threads: for t in threads:
t.join() t.join()
print("---Point of no return---") print("---Point of no return---")
if utility.isRunningInDocker() == False:
input() input()

View File

@ -1 +1,2 @@
cd "c:\praxis"
python "c:/Praxis/main.py" python "c:/Praxis/main.py"

2
praxis-user.bat Normal file
View File

@ -0,0 +1,2 @@
cd "c:\praxis"
python "c:\praxis\user_module.py"

5
tts.py
View File

@ -6,12 +6,17 @@ import requests
from gtts import gTTS from gtts import gTTS
from playsound import playsound from playsound import playsound
import utilities_script as utility
import config import config
streamLabsUrl = "https://streamlabs.com/polly/speak" streamLabsUrl = "https://streamlabs.com/polly/speak"
def tts(inputText: str, *args): def tts(inputText: str, *args):
outpath = create_speech_file(inputText) outpath = create_speech_file(inputText)
if utility.isRunningInDocker() == True:
print("Docker Detected, skipping playsound()")
else:
print("Playing Sound...")
playsound(outpath) playsound(outpath)

View File

@ -9,6 +9,8 @@ from commands.command_base import AbstractCommand
from cooldowns import Cooldown_Module from cooldowns import Cooldown_Module
import utilities_script as utility
class User_Module(): class User_Module():
def __init__(self): def __init__(self):
super().__init__() super().__init__()
@ -17,15 +19,18 @@ class User_Module():
self.MessageLog:list = [] self.MessageLog:list = []
def main(self): def main(self):
print("\nWaiting on User input...") print("\nWaiting on User input...\n")
inputLoop = True inputLoop = True
if utility.isRunningInDocker() == True:
inputLoop = False
print("\nNo User's Input Allowed")
while inputLoop: while inputLoop:
keyboardInput = input() keyboardInput = input()
message = UserMessage() message = UserMessage()
message.makeMessage(message=keyboardInput) message.makeMessage(message=keyboardInput)
if "exit" in keyboardInput: if "exit" in keyboardInput:
print("Quitting User Module Interface...") print("Quitting [User Module] Interface...")
inputLoop = False inputLoop = False
break break

View File

@ -35,9 +35,9 @@ def does_contain_OnlyNumbers(text):
return isJustNumbers return isJustNumbers
def rescale_value(value, min, max): def rescale_value(value, min, max):
print("trying Rescale") #print("trying Rescale")
returnValue = (value - min) / (max - min) returnValue = (value - min) / (max - min)
print("got ", returnValue) #print("got ", returnValue)
return returnValue return returnValue
def get_dir(selected_dir): def get_dir(selected_dir):
@ -65,6 +65,12 @@ def contains_slur(input: str):
print("<{ slur detected! }> ") print("<{ slur detected! }> ")
return containsSlur return containsSlur
def isRunningInDocker():
isD = os.getenv('ISDOCKER')
if isD is None:
return False
return isD == "cat"
def hard_shutdown(): def hard_shutdown():
current_system_pid = os.getpid() current_system_pid = os.getpid()