diff --git a/trader.py b/trader.py index 79a6e83..6991c2b 100644 --- a/trader.py +++ b/trader.py @@ -22,14 +22,24 @@ channel_mapping = {'#': Channel.GLOBAL, '&': Channel.GUILD} class Message(): - def __init__(self, message: str, date: datetime.datetime, user: str, channel: Channel) -> None: + def __init__(self, + message: str, + date: datetime.datetime, + user: str, + channel: Channel, + guild: str) -> None: self.message = message self.date = date self.user = user self.channel = channel + self.guild = guild def __str__(self) -> str: - return f'{self.date} - {self.channel.name}: {self.user}: {self.message}' + text = f'{self.date} - {self.channel.name}: ' + if self.guild: + text = text + f'<{self.guild}> ' + text = text + f'{self.user}: {self.message}' + return text def follow(thefile: str): thefile.seek(0, 2) @@ -43,11 +53,14 @@ def follow(thefile: str): def parse_string(text: str) -> Message: # result = parse('{date} {time} {timemicro} {noidea} [{level} {client} {id}]{mess_type:1}{user}: {message}', text) - result = re.search('(?P\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P\S+) (\S+) (\d+)\] (?P[#@%$&]*)(?P[^:]+): (?P.*)', text) + result = re.search('(?P\d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d) (\d+) (\S+) \[(?P\S+) (\S+) (\d+)\] (?P[#@%$&]?)(?P<\S+>)? ?(?P[^:]+): (?P.*)', text) if not result: return None date = datetime.datetime.strptime(result.group('date'), '%Y/%m/%d %H:%M:%S') - return Message(result.group('message'), date, result.group('user'), channel_mapping[result.group('channel')]) + guild = result.group('guild') + if guild: + guild = guild.strip('<>') + return Message(result.group('message'), date, result.group('user'), channel_mapping[result.group('channel')], guild) def setup_args() -> argparse.Namespace: