@@ -56,23 +56,29 @@ def periodic():
5656class AnnouncementConf : # pylint: disable=too-few-public-methods
5757 """A group's announcement configuration."""
5858
59- def __init__ (self , groupconf ):
60- (self .calcodes , self .tzinfo , self .count , self .days , self .hour ,
61- self .dow ) = eventutil .get_group_conf (groupconf )
62- self .preambles = groupconf ['daily' ].get ('text' , '' ).splitlines ()
59+ def __init__ (self , calconf , dailyconf ):
60+ self .calconf = calconf
61+ self .dow = dailyconf .get ('dow' , 0 )
62+ self .hour = dailyconf .get ('hour' )
63+ self .preambles = dailyconf .get ('text' , '' ).splitlines ()
6364
6465 def get_events (self , bot , eventtime , base , * , countdown = True ):
6566 """Get (and format) events for the given time."""
6667
67- events , alerts = eventutil .get_group_events (bot , self .calcodes , self .tzinfo , self .count ,
68- self .days , eventtime )
68+ calconf = self .calconf
69+ events , alerts = eventutil .get_group_events (bot , calconf .calcodes , calconf .tzinfo ,
70+ calconf .count , calconf .days , eventtime )
6971 if self .preambles :
7072 preamble = self .preambles [int (eventtime / (60 * 60 * 24 )) % len (self .preambles )]
7173 else :
7274 preamble = ''
7375 text = _generate_preamble (preamble , events )
7476 if events :
75- ev = eventutil .format_events (bot , events , self .tzinfo , base = base , countdown = countdown )
77+ ev = eventutil .format_events (bot ,
78+ events ,
79+ calconf .tzinfo ,
80+ base = base ,
81+ countdown = countdown )
7682 text = f'{ text } \n \n { ev } '
7783 return events , alerts , text
7884
@@ -81,20 +87,21 @@ class Announcement(collections.namedtuple('Announcement', 'time events message t
8187 """The most recent announcement."""
8288
8389
84- def _daily_messages (multibot , records ): # pylint: disable=too-many-branches,too-many-locals
90+ def _daily_messages (multibot , records ): # pylint: disable=too-many-branches,too-many-locals,too-many-statements
8591 now = time .time ()
8692 # If running at 11:22:33.444, act as if we're running at exactly 11:20:00.000.
8793 period = int (now // PERIOD * PERIOD )
8894 startofhour = now // 3600
8995
9096 for botuser , botconf in multibot .conf ['bots' ].items (): # pylint: disable=too-many-nested-blocks
9197 for groupid , groupconf in botconf ['issue37' ]['moderator' ].items ():
92- annconf = AnnouncementConf (groupconf )
93- if not annconf .tzinfo or not isinstance (annconf .hour , int ):
98+ calconf = eventutil .CalendarConf (groupconf )
99+ annconf = AnnouncementConf (calconf , groupconf ['daily' ])
100+ if not calconf .tzinfo or not isinstance (annconf .hour , int ):
94101 continue
95102
96- nowdt = datetime .datetime .fromtimestamp (now , annconf .tzinfo )
97- perioddt = datetime .datetime .fromtimestamp (period , annconf .tzinfo )
103+ nowdt = datetime .datetime .fromtimestamp (now , calconf .tzinfo )
104+ perioddt = datetime .datetime .fromtimestamp (period , calconf .tzinfo )
98105 key = (botuser , groupid )
99106 if key in records :
100107 last = Announcement (* records [key ])
@@ -123,7 +130,7 @@ def _daily_messages(multibot, records): # pylint: disable=too-many-branches,too
123130 if last :
124131 events , alerts , text = annconf .get_events (bot , last .time , perioddt )
125132 _handle_alerts (bot , records , groupid , alerts )
126- edits = diff_events (multibot , annconf .tzinfo , perioddt , last .events , events )
133+ edits = diff_events (multibot , calconf .tzinfo , perioddt , last .events , events )
127134
128135 suffix = last .suffix
129136 if edits :
0 commit comments