Skip to content

Commit 921d1f5

Browse files
committed
After sending a new daily announcement, edit the previous one to remove countdown text (like "🔜 ¹⁰ʰ¹⁰ᵐ"; see #105).
Release as 0.3.25.
1 parent 72645ad commit 921d1f5

File tree

3 files changed

+30
-26
lines changed

3 files changed

+30
-26
lines changed

metabot/modules/reminders.py

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

7980
class 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

163158
def reminder_send(bot, groupid, text, photo):

metabot/modules/test_reminders.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,15 @@ def test_daily_messages_replaced(daily_messages, monkeypatch): # pylint: disabl
938938
<a href="https://t.me/modulestestbot?start=L2V2ZW50cyA2ZmMyYzUxMDpicmF2byBVVEM">⁶ ᵈᵃʸˢ Thu 8ᵗʰ, 12–1ᵃᵐ</a> @ <a href="https://maps.google.com/maps?q=Bravo+Venue%2C+Rest+of+Bravo+Location">Bravo Venue</a>
939939
<b>Charlie Summary</b>
940940
<a href="https://t.me/modulestestbot?start=L2V2ZW50cyA2ZmMyYzUxMDpjaGFybGllIFVUQw">⁶ ᵈᵃʸˢ Thu 8ᵗʰ, 12:01–1:01ᵃᵐ</a> @ <a href="https://maps.google.com/maps?q=Charlie+Venue%2C+Rest+of+Charlie+Location">Charlie Venue</a>
941+
942+
943+
[edit_message_text chat_id=-1002000002000 disable_web_page_preview=True message_id=12345 parse_mode=HTML]
944+
There are a couple events coming up:
945+
946+
<b>Alpha Summary</b>
947+
<a href="https://t.me/modulestestbot?start=L2V2ZW50cyA2ZmMyYzUxMDphbHBoYSBVVEM">Thu 1ˢᵗ, 2:30–3:30ᵃᵐ</a> @ <a href="https://maps.google.com/maps?q=Alpha+Venue%2C+Rest+of+Alpha+Location">Alpha Venue</a>
948+
<b>Bravo Summary</b>
949+
<a href="https://t.me/modulestestbot?start=L2V2ZW50cyA2ZmMyYzUxMDpicmF2byBVVEM">Thu 8ᵗʰ, 12–1ᵃᵐ</a> @ <a href="https://maps.google.com/maps?q=Bravo+Venue%2C+Rest+of+Bravo+Location">Bravo Venue</a>
941950
"""
942951

943952

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = 'metabot'
3-
version = '0.3.24'
3+
version = '0.3.25'
44
description = 'Modularized, multi-account bot.'
55
readme = 'README.md'
66
authors = [

0 commit comments

Comments
 (0)