diff --git a/config.yaml b/config.yaml index 3711e65..3e30162 100644 --- a/config.yaml +++ b/config.yaml @@ -12,4 +12,4 @@ Chat: sold: 'Sorry, {item} is already sold' Parser: re_log: '(?P\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P\S+) (\S+) (\d+)\] (?P[#@%$&]?)(?PTo|From)?\s?(?P<\S+>)? ?(?P[^:]+): (?P.*)' - re_trade: 'Hi, I would like to buy your (?P.+) listed for (?P\d+) (?P\S+) in (?P\S+) \(stash tab "(?P.+)"; position: left (?P\d+), top (?P\d+)\)' + re_trade: 'Hi, I would like to buy your ?(?P\d*) (?P.+) (listed )?for (my )?(?P\d+) (?P\D+) in (?P\w+)\.?( \(stash tab "(?P.+)"; position: left (?P\d+), top (?P\d+)\))?' diff --git a/src/data.py b/src/data.py index 46ff7a3..3439442 100644 --- a/src/data.py +++ b/src/data.py @@ -43,23 +43,25 @@ channel_mapping = {'#': Channel.GLOBAL, class Trade(): def __init__(self, + nrItems: str, item: str, amount: int, currency: str, tab: str, - row: int, - col: int, + row: str, + col: str, league: str) -> None: + self.nrItems = int(nrItems) if nrItems else None self.item = item self.amount = amount self.currency = currency self.tab = tab - self.row = row - self.col = col + self.row = int(row) if row else None + self.col = int(col) if col else None self.league = league def __str__(self) -> str: - return f'Trade: {self.item} for {self.amount} {self.currency} in {self.tab} ({self.row}/{self.col}) in {self.league} league' + return f'Trade: {self.nrItems} {self.item} for {self.amount} {self.currency} in {self.tab} ({self.row}/{self.col}) in {self.league} league' class Message(): @@ -110,10 +112,11 @@ class Message(): def parse_trade(self) -> None: res = re_trade.search(self.message) if res: - self.trade = Trade(item=res['item'], + self.trade = Trade(nrItems=res['nrItems'], + item=res['item'], amount=int(res['amount']), currency=res['currency'], tab=res['tab'], - row=int(res['row']), - col=int(res['col']), + row=res['row'], + col=res['col'], league=res['league']) diff --git a/tests/test_log.py b/tests/test_log.py index 902879c..5ce0f5d 100644 --- a/tests/test_log.py +++ b/tests/test_log.py @@ -9,3 +9,12 @@ def test_write_to_log(): 'listed for 18 chaos in Ritual (stash tab "$"; position: left 22, top 5)' with open(log_file, 'a') as f: f.write(text) + + +def test_write_to_log_2(): + config.read_config(r'config.yaml') + log_file = config.get_value('General.log_file') + assert(log_file) + text = ' 2021/05/09 15:25:21 14716218 bad [INFO Client 15632] @From iveseee: Hi, I would like to buy your 2 Ancient Orb for my 28 Chaos Orb in Ultimatum.' + with open(log_file, 'a') as f: + f.write(text)