from enum import Enum import config as config import db import tts import credentials import commands.loader as command_loader from commands.command_base import AbstractCommand from cooldowns import Cooldown_Module import utilities_script as utility class User_Module(): def __init__(self): super().__init__() self.dbCredential: credentials.DB_Credential self.MessageLog:list = [] self.commands = command_loader.load_commands_new(AbstractCommand.CommandType.Praxis) self.UseFlagTypeMap = { # this is a mapping of the UserFlagTypes enum to function pointers UserFlagTypes.REACTIVE: self.eval_commands_Special_Reactive} self.currentUser:User = User() def main(self): print("\nWaiting on User input...\n") inputLoop = True if utility.isRunningInDocker() == True: inputLoop = False print("\nNo User's Input Allowed") while inputLoop: keyboardInput = input() message = UserMessage() message.makeMessage(self.currentUser, keyboardInput) if "exit" in keyboardInput: print("Quitting [User Module] Interface...") inputLoop = False break self.parseInput(message) def parseInput(self, message): if self.isCommand(message) == True: self.runCommand(message) else: pass def isCommand(self, message): isCommand = True #MAKE THIS return isCommand def runCommand(self, message): if not self.eval_commands_SpecialActionCheck(): self.eval_commands(message) def eval_commands(self, message): # containsURL: bool = self.contains_url(message) try: #first_space_idx = message.text.index(' ') # This fixes a error where if you send a command without arguments it fails because # it cant find the substring. if message.message.find(" ") != -1: first_space_idx = message.message.index(' ') else: first_space_idx = -1 command_text = ' ' if first_space_idx > -1: command_text = message.message[0:first_space_idx] else: command_text = message.message command = self.commands[command_text] if command is not None and command.command_type is AbstractCommand.CommandType.Praxis: command.do_command(self, message) except Exception as e: # Undo the following for debug stuff #print(e) pass # we don't care def eval_commands_SpecialActionCheck(self): foundSomething = False return foundSomething def eval_commands_Special_Reactive(self): pass def return_message(self, returnedMessage): print(returnedMessage) def tts(self, message): tts.tts(message) class User(): def __init__(self, username:str = "user"): super().__init__() self.name = username self.flags = [] class UserMessage(): def __init__(self, user = "User", message = ""): super().__init__() self.user = user self.message = message def makeMessage(self, user = "User", message = ""): self.user = user self.message = message class UserFlagTypes(Enum): REACTIVE = 1 class UserFlags(): def __init__(self, flagName = "User", flagType:UserFlagTypes = None): super().__init__() self.name = flagName self.flagType:UserFlagTypes = flagType if __name__ == "__main__": testModule = User_Module() credentials_manager = credentials.Credentials_Module() credentials_manager.load_credentials() testModule.dbCredential = credentials_manager.find_DB_Credential(config.credentialsNickname) testModule.main()