from abc import ABCMeta from commands.command_base import AbstractCommand import random from discord import message import discord import discord.message import discord.channel class CommandRoll_Praxis(AbstractCommand, metaclass=ABCMeta): """ this is the roll command. """ command = "roll" def __init__(self): super().__init__(CommandRoll_Praxis.command, n_args=1, command_type=AbstractCommand.CommandType.Praxis) 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, bot, user_message): #print("roll Detected") #message.chat.send("test acknowledged") diceRoll: str = "" bot.return_message("\nRolling Dice...") #print("Rolling Dice...") if ("f") in user_message.message.lower(): diceRoll = self.roll(2, user_message) else: diceRoll = self.roll(1, user_message) bot.return_message(diceRoll) def roll(self, roll_type, user_message): user = str(user_message.user.name) diceRoll = "" switch = { 1: "Standard", 2: "Fate Dice" } temp_preParsedMessage = user_message.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 + "\n" def get_help(self): return self.help class CommandRoll_Twitch(AbstractCommand, metaclass=ABCMeta): """ this is the roll command. """ command = "!roll" def __init__(self): super().__init__(CommandRoll_Twitch.command, n_args=1, command_type=AbstractCommand.CommandType.TWITCH) self.help = ["MISSING HELP ENTRY", "\nExample:","command \"PARAM\""] self.isCommandEnabled = True def do_command(self, bot, message): print("!roll Detected") #message.chat.send("test acknowledged") diceRoll: str = "" bot.send_message("Rolling Dice...") print("Rolling Dice...") if ("f") in message.text.lower(): diceRoll = self.roll(2, message) else: diceRoll = self.roll(1, message) bot.send_message(diceRoll) def roll(self, roll_type, message): diceRoll = "" switch = { 1: "Standard", 2: "Fate Dice" } temp_preParsedMessage = 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_type == 1: # 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 = "@" + message.sender + " rolled: " + diceRoll print(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 = "@" + message.sender + " fate rolled: " + diceRoll print(diceRoll) return diceRoll def get_help(self): return self.help class CommandRoll_Discord(AbstractCommand, metaclass=ABCMeta): """ this is the roll command. """ command = "!roll" def __init__(self): super().__init__(CommandRoll_Discord.command, n_args=1, command_type=AbstractCommand.CommandType.DISCORD) self.help = ["MISSING HELP ENTRY", "\nExample:","command \"PARAM\""] self.isCommandEnabled = True async def do_command(self, bot, message: discord.Message): print("!roll Detected") #message.chat.send("test acknowledged") diceRoll: str = "" await bot.send_message(message, "Rolling Dice...") #await message.channel.send("Rolling Dice...") print("Rolling Dice...") if ("f") in message.content.lower(): diceRoll = await self.roll(2, message) else: diceRoll = await self.roll(1, message) await bot.send_message(message, diceRoll) #await message.channel.send(diceRoll) async def roll(self, roll_type, message: discord.Message): diceRoll = "" switch = { 1: "Standard", 2: "Fate Dice" } temp_preParsedMessage = message.content.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: # 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 = message.author.mention + " rolled: " + diceRoll print(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 = message.author.mention + " fate rolled: " + diceRoll print(diceRoll) return diceRoll def get_help(self): return self.help