newbies.py 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. from __future__ import annotations
  2. import datetime
  3. import sys
  4. import typing
  5. import cache
  6. def main() -> None:
  7. planets = ['Avalon', 'Berthier', 'Boucher', 'Nova Honshu', 'Promitor']
  8. joined: dict[str, int] = {}
  9. for planet in planets:
  10. print('querying', planet, 'chat...', file=sys.stderr)
  11. messages: typing.Sequence[Message] = cache.get(f'https://api.fnar.net/chat/messages?channel_names={planet} Global Site Owners')
  12. for message in messages:
  13. if message['Type'] == 'JOINED':
  14. old_join = joined.get(message['SenderUserName'])
  15. if old_join is None or old_join > message['MessageTimestamp']:
  16. joined[message['SenderUserName']] = message['MessageTimestamp']
  17. for user_id, join_ts in sorted(joined.items(), key=lambda i: i[1]):
  18. join_str = datetime.datetime.fromtimestamp(join_ts/1000, tz=datetime.UTC).strftime('%Y-%m-%d %H:%M:%S')
  19. print(user_id, join_str, sep='\t')
  20. class Message(typing.TypedDict):
  21. Type: typing.Literal['JOINED', 'LEFT', 'MESSAGE']
  22. SenderUserName: str
  23. MessageTimestamp: int
  24. if __name__ == '__main__':
  25. main()