| 12345678910111213141516171819202122232425262728293031 |
- from __future__ import annotations
- import datetime
- import sys
- import typing
- import cache
- def main() -> None:
- planets = ['Avalon', 'Berthier', 'Boucher', 'Nova Honshu', 'Promitor']
- joined: dict[str, int] = {}
- for planet in planets:
- print('querying', planet, 'chat...', file=sys.stderr)
- messages: typing.Sequence[Message] = cache.get(f'https://api.fnar.net/chat/messages?channel_names={planet} Global Site Owners')
- for message in messages:
- if message['Type'] == 'JOINED':
- old_join = joined.get(message['SenderUserName'])
- if old_join is None or old_join > message['MessageTimestamp']:
- joined[message['SenderUserName']] = message['MessageTimestamp']
- for user_id, join_ts in sorted(joined.items(), key=lambda i: i[1]):
- join_str = datetime.datetime.fromtimestamp(join_ts/1000, tz=datetime.UTC).strftime('%Y-%m-%d %H:%M:%S')
- print(user_id, join_str, sep='\t')
- class Message(typing.TypedDict):
- Type: typing.Literal['JOINED', 'LEFT', 'MESSAGE']
- SenderUserName: str
- MessageTimestamp: int
- if __name__ == '__main__':
- main()
|