245 lines
8.8 KiB
Python
245 lines
8.8 KiB
Python
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_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, twitch_message):
|
|
print("!roll Detected")
|
|
#twitch_message.chat.send("test acknowledged")
|
|
|
|
diceRoll: str = ""
|
|
bot.send_message("Rolling Dice...")
|
|
print("Rolling Dice...")
|
|
|
|
if ("f") in twitch_message.text.lower():
|
|
diceRoll = self.roll(2, twitch_message)
|
|
else:
|
|
diceRoll = self.roll(1, twitch_message)
|
|
|
|
bot.send_message(diceRoll)
|
|
|
|
|
|
def roll(self, roll_type, twitch_message):
|
|
diceRoll = ""
|
|
switch = {
|
|
1: "Standard",
|
|
2: "Fate 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_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 = "@" + twitch_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 = "@" + twitch_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, discord_message: discord.Message):
|
|
print("!roll Detected")
|
|
#twitch_message.chat.send("test acknowledged")
|
|
|
|
diceRoll: str = ""
|
|
await bot.send_message(discord_message, "Rolling Dice...")
|
|
#await discord_message.channel.send("Rolling Dice...")
|
|
print("Rolling Dice...")
|
|
|
|
if ("f") in discord_message.content.lower():
|
|
diceRoll = await self.roll(2, discord_message)
|
|
else:
|
|
diceRoll = await self.roll(1, discord_message)
|
|
|
|
await bot.send_message(discord_message, diceRoll)
|
|
#await discord_message.channel.send(diceRoll)
|
|
|
|
async def roll(self, roll_type, discord_message: discord.Message):
|
|
diceRoll = ""
|
|
switch = {
|
|
1: "Standard",
|
|
2: "Fate Dice"
|
|
}
|
|
temp_preParsedMessage = discord_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 = discord_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 = discord_message.author.mention + " fate rolled: " + diceRoll
|
|
print(diceRoll)
|
|
|
|
return diceRoll
|
|
|
|
def get_help(self):
|
|
return self.help |