PlayOptions namedtuple constant class, uncommitted exceptions, use re.compile in parsers regex for IDE color formatting, change logging

This commit is contained in:
Xevion
2021-01-23 23:57:39 -06:00
parent 01762c4dfe
commit bc4f13ac52
4 changed files with 23 additions and 12 deletions

View File

@@ -87,17 +87,14 @@ class UnbelievaClient(discord.Client):
print(options, my_cards, dealer_cards) print(options, my_cards, dealer_cards)
# self.current_blackjack = message # self.current_blackjack = message
def parse_options(self, options_str: str) -> Tuple[bool, bool, bool, bool]: def parse_options(self, options_str: str) -> PlayOptions:
""" """
Return a tuple of booleans describing what the player can do. Return a tuple of booleans describing what the player can do.
Tuple Options: [hit, stand, double_down, split] Tuple Options: [hit, stand, double_down, split]
""" """
return ( options = [f'`{sub}`' in options_str for sub in ['hit', 'stand', 'double down', 'split']]
'`hit`' in options_str, # noinspection PyProtectedMember
'`stand`' in options_str, return PlayOptions._make(options)
'`double down`' in options_str,
'`split`' in options_str
)
def parse_cards(self, card_str: discord.embeds.EmbedProxy) -> Tuple[str, Optional[str], Tuple[int, bool]]: def parse_cards(self, card_str: discord.embeds.EmbedProxy) -> Tuple[str, Optional[str], Tuple[int, bool]]:
""" """

3
bot/constants.py Normal file
View File

@@ -0,0 +1,3 @@
from collections import namedtuple
PlayOptions = namedtuple('PlayOptions', ['hit', 'stand', 'double', 'split'])

View File

@@ -12,3 +12,11 @@ class NoAceValue(BlackjackException):
class IndetermineValue(BlackjackException): class IndetermineValue(BlackjackException):
pass pass
class InvalidCard(BlackjackException):
pass
class CooldownRequired(UnbelievableException):
pass

View File

@@ -35,8 +35,8 @@ class EmbedMessage(BaseMessage, ABC):
class TaskCooldownMessage(EmbedMessage): class TaskCooldownMessage(EmbedMessage):
COOLDOWN_REGEX = r'You cannot (work|be a slut|commit a crime) for ([\w\s]+)\.' COOLDOWN_REGEX = re.compile(r'You cannot (work|be a slut|commit a crime) for ([\w\s]+)\.')
DURATION_REGEX = r'(\d+) (hour|minute|second)s?(?: and (\d+) (hour|minute|second)s?)?' DURATION_REGEX = re.compile(r'(\d+) (hour|minute|second)s?(?: and (\d+) (hour|minute|second)s?)?')
DELAY = 2 DELAY = 2
durations = {'hour': 3600, 'minute': 60, 'second': 1} durations = {'hour': 3600, 'minute': 60, 'second': 1}
@@ -60,16 +60,19 @@ class TaskCooldownMessage(EmbedMessage):
class TaskResponse(EmbedMessage): class TaskResponse(EmbedMessage):
MONEY_REGEX = re.compile(r'\$([0-9,]+)')
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.change = 0
money_match = re.search(r'\$([0-9,]+)', self.embed.description) self.change = 0
money_match = re.search(r'', self.embed.description)
if money_match and 'deposited' not in self.embed.description.lower(): if money_match and 'deposited' not in self.embed.description.lower():
change = int(money_match.group(1).replace(',', '')) change = int(money_match.group(1).replace(',', ''))
if self.embed.colour.value == 6732650: if self.embed.colour.value == 6732650:
self.change += change self.change += change
# logger.info(f'Gained ${change}') logger.info(f'{self.message.author} Gained ${change}')
if self.embed.colour.value == 15684432: if self.embed.colour.value == 15684432:
self.change -= change self.change -= change
logger.info(f'{self.message.author} Lost ${change}')
# logger.info(f'Lost ${change}') # logger.info(f'Lost ${change}')