Forráskód Böngészése

newbies: don't show people that previously joined a planet

don't filter chat messages before `since`
instead, manually filter out people who's first join was before that time
raylu 4 napja
szülő
commit
eb84a95b04
1 módosított fájl, 6 hozzáadás és 2 törlés
  1. 6 2
      newbies.py

+ 6 - 2
newbies.py

@@ -11,7 +11,7 @@ import httpx
 import cache
 
 def main() -> None:
-	since = sys.argv[1] + 'T00:00:00Z'
+	since = sys.argv[1]
 	c = httpx.Client()
 
 	codes: dict[str, str] = {company['UserName'].casefold(): company['CompanyCode']
@@ -23,12 +23,16 @@ def main() -> None:
 	for planet in planets:
 		print('querying', planet, 'chat...', file=sys.stderr)
 		messages: typing.Sequence[Message] = c.get('https://api.fnar.net/chat/messages',
-				params={'channel_names': planet + ' Global Site Owners', 'updated_since': since}).raise_for_status().json()
+				params={'channel_names': planet + ' Global Site Owners'}).raise_for_status().json()
 		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']
+	threshold = int(datetime.datetime.strptime(since, '%Y-%m-%d').replace(tzinfo=datetime.UTC).timestamp() * 1000)
+	for username, join_ts in list(joined.items()):
+		if join_ts < threshold:
+			del joined[username]
 
 	relevant_cos = {co for username in joined.keys() if (co := codes.get(username))}
 	for username in joined.keys():