Support currency trade

This commit is contained in:
Oliver Hartmann 2021-05-09 16:18:37 +02:00
parent fcf65b7c10
commit 6e99de90a6
3 changed files with 21 additions and 9 deletions

View File

@ -12,4 +12,4 @@ Chat:
sold: 'Sorry, {item} is already sold' sold: 'Sorry, {item} is already sold'
Parser: Parser:
re_log: '(?P<date>\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P<level>\S+) (\S+) (\d+)\] (?P<channel>[#@%$&]?)(?P<ToFrom>To|From)?\s?(?P<guild><\S+>)? ?(?P<user>[^:]+): (?P<message>.*)' re_log: '(?P<date>\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P<level>\S+) (\S+) (\d+)\] (?P<channel>[#@%$&]?)(?P<ToFrom>To|From)?\s?(?P<guild><\S+>)? ?(?P<user>[^:]+): (?P<message>.*)'
re_trade: 'Hi, I would like to buy your (?P<item>.+) listed for (?P<amount>\d+) (?P<currency>\S+) in (?P<league>\S+) \(stash tab "(?P<tab>.+)"; position: left (?P<col>\d+), top (?P<row>\d+)\)' re_trade: 'Hi, I would like to buy your ?(?P<nrItems>\d*) (?P<item>.+) (listed )?for (my )?(?P<amount>\d+) (?P<currency>\D+) in (?P<league>\w+)\.?( \(stash tab "(?P<tab>.+)"; position: left (?P<col>\d+), top (?P<row>\d+)\))?'

View File

@ -43,23 +43,25 @@ channel_mapping = {'#': Channel.GLOBAL,
class Trade(): class Trade():
def __init__(self, def __init__(self,
nrItems: str,
item: str, item: str,
amount: int, amount: int,
currency: str, currency: str,
tab: str, tab: str,
row: int, row: str,
col: int, col: str,
league: str) -> None: league: str) -> None:
self.nrItems = int(nrItems) if nrItems else None
self.item = item self.item = item
self.amount = amount self.amount = amount
self.currency = currency self.currency = currency
self.tab = tab self.tab = tab
self.row = row self.row = int(row) if row else None
self.col = col self.col = int(col) if col else None
self.league = league self.league = league
def __str__(self) -> str: 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(): class Message():
@ -110,10 +112,11 @@ class Message():
def parse_trade(self) -> None: def parse_trade(self) -> None:
res = re_trade.search(self.message) res = re_trade.search(self.message)
if res: if res:
self.trade = Trade(item=res['item'], self.trade = Trade(nrItems=res['nrItems'],
item=res['item'],
amount=int(res['amount']), amount=int(res['amount']),
currency=res['currency'], currency=res['currency'],
tab=res['tab'], tab=res['tab'],
row=int(res['row']), row=res['row'],
col=int(res['col']), col=res['col'],
league=res['league']) league=res['league'])

View File

@ -9,3 +9,12 @@ def test_write_to_log():
'listed for 18 chaos in Ritual (stash tab "$"; position: left 22, top 5)' 'listed for 18 chaos in Ritual (stash tab "$"; position: left 22, top 5)'
with open(log_file, 'a') as f: with open(log_file, 'a') as f:
f.write(text) 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)