1010
1111dotenv .load_dotenv ()
1212
13+ OPENAI_API_KEY = os .getenv ('OPENAI_API_KEY' )
14+ if not OPENAI_API_KEY :
15+ raise KeyError ("OPENAI_API_KEY is not set in environment variables" )
16+
1317# Get current folder
1418current_folder = os .path .dirname (os .path .abspath (__file__ ))
1519
1822MODEL = "gpt-4.1-nano"
1923REQUIRED_EVENT_FIELDS = ['title' , 'description' , 'date' , 'time' , 'link' ]
2024
21- try :
22- SLACK_TEST_WEBHOOK = os .getenv ('SLACK_BOT_TEST_WEBHOOK' )
23- SLACK_WEBHOOK = os .getenv ('SLACK_BOT_WEBHOOK' )
24- except KeyError as e :
25- raise KeyError (f"Environment variable not set: { e } " )
26-
2725# Setup logging
2826logging .basicConfig (level = logging .INFO )
2927logger = logging .getLogger (__name__ )
3028
31- def summarise_events_with_llm (events_file = EVENTS_FILE ):
32- try :
33- events = _load_events (events_file )
34- future_events = _filter_future_events (events )
35-
36- print ("Future Events:\n " , future_events )
37-
38- if not future_events :
39- logger .warning ("No future events found" )
40- return "No upcoming events scheduled."
41-
42- formatted_events = _format_events_as_markdown (future_events )
43-
44- print ("Formatted Events for LLM:\n " , formatted_events [:2000 ])
45-
46- llm_summary = _get_llm_summary (formatted_events )
47- except Exception as e :
48- logger .error (f"Error summarizing events: { e } " , exc_info = True )
49- raise
50-
51- formatted_summary = _format_for_slack (llm_summary )
52- return formatted_summary
53-
5429def _load_events (events_file ):
5530 try :
5631 with open (events_file ) as f :
@@ -151,7 +126,7 @@ def _get_llm_summary(formatted_events):
151126
152127 response = openai .chat .completions .create (
153128 model = MODEL ,
154- messages = [{"role" : "user" , "content" : prompt }]
129+ messages = [{"role" : "user" , "content" : prompt }],
155130 )
156131
157132 summary = response .choices [0 ].message .content
@@ -170,15 +145,37 @@ def _format_for_slack(text):
170145 text = re .sub (r'\[([^\]]+)\]\(([^)]+)\)' , r'<\2|\1>' , text )
171146 return text
172147
173- def _post_to_slack (message , slack_webhook_url = SLACK_TEST_WEBHOOK ):
174- if not slack_webhook_url :
175- raise ValueError ("SLACK_SUMMARY_WEBHOOK not set in environment variables" )
176-
148+ def _post_to_slack (message , slack_webhook_url ):
177149 response = requests .post (slack_webhook_url , json = {'text' : message })
178150 response .raise_for_status ()
179151 logger .info ("Message posted to Slack successfully" )
180152
153+ def load_events_and_summarise (events_file = EVENTS_FILE ):
154+ try :
155+ events = _load_events (events_file )
156+ future_events = _filter_future_events (events )
157+
158+ print ("Future Events:\n " , future_events )
159+
160+ if not future_events :
161+ logger .warning ("No future events found" )
162+ return "No upcoming events scheduled."
163+
164+ formatted_events = _format_events_as_markdown (future_events )
165+
166+ llm_summary = _get_llm_summary (formatted_events )
167+ except Exception as e :
168+ logger .error (f"Error summarizing events: { e } " , exc_info = True )
169+ raise
170+
171+ formatted_summary = _format_for_slack (llm_summary )
172+ return formatted_summary
173+
181174if __name__ == "__main__" :
175+ dotenv .load_dotenv ()
176+
177+ print ('Enter main function' )
178+
182179 parser = argparse .ArgumentParser (description = "Summarise upcoming Meetup events and post to Slack." )
183180 parser .add_argument (
184181 "--channel" ,
@@ -190,15 +187,20 @@ def _post_to_slack(message, slack_webhook_url=SLACK_TEST_WEBHOOK):
190187 args = parser .parse_args ()
191188
192189 test_mode_activated = args .channel == "test-meetup-summaries"
193-
190+
194191 if test_mode_activated :
195- slack_webhook_url = SLACK_TEST_WEBHOOK
192+ logger .info ("Running in test mode." )
193+ SLACK_WEBHOOK = os .getenv ('SLACK_BOT_TEST_WEBHOOK' )
196194 else :
197- slack_webhook_url = SLACK_WEBHOOK
195+ logger .info ("Running in production mode." )
196+ SLACK_WEBHOOK = os .getenv ('SLACK_BOT_WEBHOOK' )
197+
198+ if SLACK_WEBHOOK is None :
199+ raise KeyError ("SLACK_BOT_TEST_WEBHOOK or SLACK_BOT_WEBHOOK must be set in environment variables" )
198200
199201 try :
200- summary = summarise_events_with_llm (args .events_file )
201- _post_to_slack (summary , slack_webhook_url )
202+ summary = load_events_and_summarise (args .events_file )
203+ _post_to_slack (summary , slack_webhook_url = SLACK_WEBHOOK )
202204 except Exception as e :
203205 logger .error (f"Failed to summarize and post events: { e } " , exc_info = True )
204206 raise
0 commit comments