@@ -61,7 +61,7 @@ def __init__(self, groupconf):
6161 self .dow ) = eventutil .get_group_conf (groupconf )
6262 self .preambles = groupconf ['daily' ].get ('text' , '' ).splitlines ()
6363
64- def get_events (self , bot , eventtime , base ):
64+ def get_events (self , bot , eventtime , base , * , countdown = True ):
6565 """Get (and format) events for the given time."""
6666
6767 events , alerts = eventutil .get_group_events (bot , self .calcodes , self .tzinfo , self .count ,
@@ -72,15 +72,16 @@ def get_events(self, bot, eventtime, base):
7272 preamble = ''
7373 text = _generate_preamble (preamble , events )
7474 if events :
75- text = f'{ text } \n \n { eventutil .format_events (bot , events , self .tzinfo , base = base )} '
75+ ev = eventutil .format_events (bot , events , self .tzinfo , base = base , countdown = countdown )
76+ text = f'{ text } \n \n { ev } '
7677 return events , alerts , text
7778
7879
7980class Announcement (collections .namedtuple ('Announcement' , 'time events message text suffix' )):
8081 """The most recent announcement."""
8182
8283
83- def _daily_messages (multibot , records ): # pylint: disable=too-many-branches,too-many-locals,too-many-statements
84+ def _daily_messages (multibot , records ): # pylint: disable=too-many-branches,too-many-locals
8485 now = time .time ()
8586 # If running at 11:22:33.444, act as if we're running at exactly 11:20:00.000.
8687 period = int (now // PERIOD * PERIOD )
@@ -100,32 +101,28 @@ def _daily_messages(multibot, records): # pylint: disable=too-many-branches,too
100101 else :
101102 last = None
102103
103- if perioddt .hour == annconf .hour and not annconf .dow & 1 << perioddt .weekday () and (
104- not last or startofhour > last .time // 3600 ):
105- sendnew = True
106- eventtime = period
107- elif last :
108- sendnew = False
109- eventtime = last .time
110- else :
111- continue
112-
113104 # See https://github.com/nmlorg/metabot/issues/26.
114105 bot = ntelebot .bot .Bot (botconf ['issue37' ]['telegram' ]['token' ])
115106 bot .multibot = multibot
116107 bot ._username = botuser # pylint: disable=protected-access
117108
118- events , alerts , text = annconf .get_events (bot , eventtime , perioddt )
119- _handle_alerts (bot , records , groupid , alerts )
120-
121- message = None
122-
123- if sendnew :
109+ if perioddt .hour == annconf .hour and not annconf .dow & 1 << perioddt .weekday () and (
110+ not last or startofhour > last .time // 3600 ):
111+ events , alerts , text = annconf .get_events (bot , period , perioddt )
112+ _handle_alerts (bot , records , groupid , alerts )
124113 if events :
125114 url = eventutil .get_image (events [0 ], botconf )
126115 message = reminder_send (bot , groupid , text , url )
127- suffix = ''
128- else :
116+ records [key ] = (period , [event .copy () for event in events ], message , text , '' )
117+ if last :
118+ _ , _ , text = annconf .get_events (bot , last .time , perioddt , countdown = False )
119+ reminder_edit (bot , groupid , last .message ['message_id' ], text ,
120+ last .message .get ('caption' ))
121+ continue
122+
123+ if last :
124+ events , alerts , text = annconf .get_events (bot , last .time , perioddt )
125+ _handle_alerts (bot , records , groupid , alerts )
129126 edits = diff_events (multibot , annconf .tzinfo , perioddt , last .events , events )
130127
131128 suffix = last .suffix
@@ -154,10 +151,8 @@ def _daily_messages(multibot, records): # pylint: disable=too-many-branches,too
154151 newtext = f'{ newtext } \n \n [{ suffix } ]'
155152 message = reminder_edit (bot , groupid , last .message ['message_id' ], newtext ,
156153 last .message .get ('caption' ))
157-
158- if message :
159- records [key ] = (eventtime , [event .copy () for event in events ], message , text ,
160- suffix )
154+ records [key ] = (last .time , [event .copy () for event in events ], message , text ,
155+ suffix )
161156
162157
163158def reminder_send (bot , groupid , text , photo ):
0 commit comments