Merge pull request 'master' (#25) from master into Command-Management-Module

Reviewed-on: #25
This commit is contained in:
alex_orid 2021-04-16 02:06:44 +00:00
commit 6bab6d5342
9 changed files with 102 additions and 52 deletions

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

@ -33,8 +33,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

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

View File

@ -36,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):
@ -63,6 +64,8 @@ def user_module_init(dbCert, Empty):
userModule_.main() 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
@ -100,6 +103,8 @@ def thread_main():
thread_.start() thread_.start()
if config.user_module == True: if config.user_module == True:
if utility.isRunningInDocker() == False:
config.user_module = False
thread_ = threading.Thread(target=user_module_init, args=(dbCert, None)) thread_ = threading.Thread(target=user_module_init, args=(dbCert, None))
threads.append(thread_) threads.append(thread_)
thread_.start() thread_.start()
@ -109,6 +114,7 @@ def thread_main():
t.join() t.join()
print("---Point of no return---") print("---Point of no return---")
if utility.isRunningInDocker() == False:
input() input()

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__()
@ -19,6 +21,9 @@ class User_Module():
def main(self): def main(self):
print("\nWaiting on User input...\n") 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()

View File

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