1
1
import logging
2
2
import os
3
3
import datetime
4
+ from pytz import timezone
4
5
import requests
5
6
import tables
6
7
7
8
8
9
def run (req ):
9
10
logging .info ('Python HTTP trigger function processed a request.' )
11
+ dd = datetime .now (timezone ('US/Pacific' ))
10
12
11
13
req_body = req .get_json ()
12
14
logging .info (f"Received JSON: { req_body } " )
13
15
14
16
callsign = req_body .get ('callsign' )
15
17
18
+ content = create_content (req_body )
19
+
16
20
table = tables .get_table ()
17
21
entity = tables .query_for_entity (table , callsign )
18
22
messageId = None
23
+ existingMessage = None
24
+
19
25
if is_entity_recent (entity ):
20
26
messageId = entity ['MessageId' ]
21
- content = create_content (req_body )
22
- messageId = call_target (content , messageId )
27
+ existingMessage = get_previous_message (messageId )
28
+ content = existingMessage + "\n " + content
29
+
30
+ messageId = post_message (content , messageId )
23
31
tables .upsert_entity (table , callsign , messageId )
24
-
25
- def create_content (req_body ):
32
+
33
+ def create_content (req_body , dd ):
26
34
callsign = req_body .get ('callsign' , 'Unknown' )
27
35
source = req_body .get ('source' , 'Unknown' )
28
36
frequency = req_body .get ('frequency' , 'Unknown' )
@@ -33,7 +41,7 @@ def create_content(req_body):
33
41
spot_deeplink = create_spot_deeplink (source , callsign , wwffRef )
34
42
35
43
# flags = 4 means it will suppress embeds: https://discord.com/developers/docs/resources/message#message-object-message-flags
36
- content = {"content" : f"{ callsign } | { spot_deeplink } | freq: { frequency } | mode: { mode } | loc: { summitRef } { wwffRef } " , "flags" : 4 }
44
+ content = {"content" : f"{ callsign } | { spot_deeplink } | freq: { frequency } | mode: { mode } | loc: { summitRef } { wwffRef } | { dd . strftime ( "%H:%M" ) } " , "flags" : 4 }
37
45
return content
38
46
39
47
def create_spot_deeplink (source , callsign , wwffRef ):
@@ -44,7 +52,7 @@ def create_spot_deeplink(source, callsign, wwffRef):
44
52
return f"[{ source } ](https://api.pota.app/spot/comments/{ callsign } /{ wwffRef } )"
45
53
case _:
46
54
return ""
47
-
55
+
48
56
def is_entity_recent (entity ):
49
57
if entity is None :
50
58
return False
@@ -53,7 +61,7 @@ def is_entity_recent(entity):
53
61
lookback_seconds = int (os .getenv ('LOOKBACK_SECONDS' , 7200 ))
54
62
return (cur_time - ent_time ).total_seconds () < lookback_seconds
55
63
56
- def call_target (content , messageId = None ):
64
+ def post_message (content , messageId = None ):
57
65
target_url = os .getenv ('TARGET_URL' )
58
66
verb = "POST"
59
67
if messageId is not None :
@@ -62,5 +70,12 @@ def call_target(content, messageId=None):
62
70
response = requests .request (verb , url = target_url , params = {"wait" : "true" }, json = content )
63
71
return extract_message_id (response )
64
72
73
+ def get_previous_message (messageId ):
74
+ target_url = os .getenv ('TARGET_URL' )
75
+ verb = "GET"
76
+ target_url = target_url + f"/messages/{ messageId } "
77
+ response = requests .request (verb , url = target_url )
78
+ response .json ()['content' ]
79
+
65
80
def extract_message_id (response ):
66
81
return response .json ()['id' ]
0 commit comments