diff --git a/commands/command_base.py b/commands/command_base.py index 761c602..b3afc97 100644 --- a/commands/command_base.py +++ b/commands/command_base.py @@ -53,5 +53,5 @@ class AbstractCommand(metaclass=ABCMeta): return self.isCommandEnabled @abstractmethod - def do_command(self, bot, user, command, rest): + def do_command(self, bot, user, command, rest, bonusData): pass \ No newline at end of file diff --git a/commands/implemented/Command_roll_v2.py b/commands/implemented/Command_roll_v2.py new file mode 100644 index 0000000..d8928f1 --- /dev/null +++ b/commands/implemented/Command_roll_v2.py @@ -0,0 +1,114 @@ +from abc import ABCMeta + +from commands.command_base import AbstractCommand + +import random +import utilities_script as utility + +class Command_test_v2(AbstractCommand, metaclass=ABCMeta): + """ + this is the test command. + """ + command = "!roll" + + def __init__(self): + super().__init__(Command_test_v2.command, n_args=1, command_type=AbstractCommand.CommandType.Ver2) + self.help = ["This will roll dice, based on your inputs.", + "\nExample:","roll \"d20\"", "roll \"1D20+5\"", "roll \"10df\"", "roll \"10Df+3\""] + self.isCommandEnabled = True + + def do_command(self, source = AbstractCommand.CommandSource.default, user = "User", command = "", rest = "", bonusData = None): + returnString = user + " sent: [ " + command + " ] with: " + rest + + if ("f") in rest.lower(): + returnString = self.roll(2, user, command + " " +rest) + else: + returnString = self.roll(1, user, command + " " +rest) + + return returnString + + def roll(self, roll_type, user, user_message): + diceRoll = "" + switch = { + 1: "Standard", + 2: "Fate Dice" + } + temp_preParsedMessage = user_message.split("+") + + tempParsedMessage = temp_preParsedMessage[0].split(" ") + temp_dice_stmt: str = tempParsedMessage[1] + parsedMessage = temp_dice_stmt.lower().split("d") + + loopBool: bool = False + if parsedMessage[0] != "": + loopBool = True + if loopBool == True: + if int(parsedMessage[0]) == 1: + loopBool = False + + if roll_type == 1: + print("-rolling...") + # If roll is in xdx+x format + if loopBool == True: + rolls: list = [] + for x in range(int(parsedMessage[0])): + rolls.append(random.randint(1, int(parsedMessage[1]))) # This is the roller + + rollTotal = 0 + for roll in rolls: + rollTotal = rollTotal + roll + diceRoll = diceRoll + str(roll) + ", " + diceRoll = diceRoll[:-2] # This removes the last two characters in the string + + if len(temp_preParsedMessage) == 2: + diceRoll = diceRoll + " + " + temp_preParsedMessage[1] + " = " + str( + rollTotal + int(temp_preParsedMessage[1])) + else: + diceRoll = diceRoll + " = " + str(rollTotal) + # If roll is in dx+x format + if loopBool == False: + roll: int = random.randint(1, int(parsedMessage[1])) # This is the roller + + if len(temp_preParsedMessage) == 2: + diceRoll = str(roll) + " + " + temp_preParsedMessage[1] + " = " + str( + roll + int(temp_preParsedMessage[1])) + else: + diceRoll = str(roll) + diceRoll = user + " rolled: " + diceRoll + + if roll_type == 2: + + print("-fate Rolling....") + # !roll 4df + # If roll is in xdx+x format + if loopBool == True: + rolls: list = [] + for x in range(int(parsedMessage[0])): + rolls.append(random.randint(-1, 1)) # This is the roller + + rollTotal = 0 + for roll in rolls: + rollTotal = rollTotal + roll + diceRoll = diceRoll + str(roll) + ", " + diceRoll = diceRoll[:-2] # This removes the last two characters in the string + + if len(temp_preParsedMessage) == 2: + diceRoll = diceRoll + " + " + temp_preParsedMessage[1] + " = " + str( + rollTotal + int(temp_preParsedMessage[1])) + else: + diceRoll = diceRoll + " = " + str(rollTotal) + # If roll is in dx+x format + if loopBool == False: + roll: int = random.randint(-1, 1) # This is the roller + + if len(temp_preParsedMessage) == 2: + diceRoll = str(roll) + " + " + temp_preParsedMessage[1] + " = " + str( + roll + int(temp_preParsedMessage[1])) + else: + diceRoll = str(roll) + diceRoll = user + " fate rolled: " + diceRoll + + return diceRoll + + def get_help(self): + return self.help \ No newline at end of file diff --git a/commands/implemented/Command_test_v2.py b/commands/implemented/Command_test_v2.py index 09cba73..18995d3 100644 --- a/commands/implemented/Command_test_v2.py +++ b/commands/implemented/Command_test_v2.py @@ -16,7 +16,7 @@ class Command_test_v2(AbstractCommand, metaclass=ABCMeta): "\nExample:","testerino"] self.isCommandEnabled = True - def do_command(self, source = AbstractCommand.CommandSource.default, user = "User", command = "", rest = ""): + def do_command(self, source = AbstractCommand.CommandSource.default, user = "User", command = "", rest = "", bonusData = None): returnString = user + " sent: [ " + command + " ] with: " + rest #print(returnString) return returnString diff --git a/standalone_command.py b/standalone_command.py index 4fc619a..cf905e2 100644 --- a/standalone_command.py +++ b/standalone_command.py @@ -40,7 +40,7 @@ def handle_command(source, username, command, rest, bonusData): cmd:AbstractCommand = loadedCommands[command] if cmd is not None: - cmd_response = cmd.do_command(source, username, command, rest) + cmd_response = cmd.do_command(source, username, command, rest, bonusData) return flask.make_response("{\"message\":\"%s\"}" % cmd_response, 200, {"Content-Type": "application/json"}) #print("Doing a command")