from abc import ABCMeta from commands.command_base import AbstractCommand import random class CommandRoll(AbstractCommand, metaclass=ABCMeta): """ this is the roll command. """ command = "!roll" def __init__(self): super().__init__(CommandRoll.command, n_args=1, command_type=AbstractCommand.CommandType.TWITCH) def do_command(self, bot, twitch_message): print("!roll Detected") #twitch_message.chat.send("test acknowledged") diceRoll: str = "" bot.send_message("Rolling Dice...") print("Rolling Dice...") temp_preParsedMessage = twitch_message.text.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 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]))) 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])) if len(temp_preParsedMessage) == 2: diceRoll = str(roll) + " + " + temp_preParsedMessage[1] + " = " + str( roll + int(temp_preParsedMessage[1])) else: diceRoll = str(roll) diceRoll = "@" + twitch_message.sender + " rolled: " + diceRoll print(diceRoll) bot.send_message(diceRoll)