Skip to content

Commit e1350c8

Browse files
committed
If reminder_edit gets an Unmodified error, return the cached message as if Telegram returned it as a result of a successful edit.
This is not strictly correct — lastmessage['text'] will not contain the new text (etc.) — but is arguably better than treating an Unmodified as a failure (triggering another attempt to edit next run). See #108. Release as 0.3.25.2.
1 parent 16d821f commit e1350c8

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

metabot/modules/reminders.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,7 @@ def _daily_messages(multibot, records): # pylint: disable=too-many-branches,too
124124
'')
125125
if last:
126126
text = annconf.get_events(bot, last.time, perioddt, countdown=False)[2]
127-
reminder_edit(bot, groupid, last.message['message_id'], text,
128-
last.message.get('caption'))
127+
reminder_edit(bot, groupid, last.message, text)
129128
continue
130129

131130
if last:
@@ -157,8 +156,7 @@ def _daily_messages(multibot, records): # pylint: disable=too-many-branches,too
157156
newtext = text
158157
if suffix:
159158
newtext = f'{newtext}\n\n[{suffix}]'
160-
message = reminder_edit(bot, groupid, last.message['message_id'], newtext,
161-
last.message.get('caption'))
159+
message = reminder_edit(bot, groupid, last.message, newtext)
162160
if message:
163161
records[key] = (last.time, [event.copy() for event in events], message,
164162
text, suffix)
@@ -188,12 +186,13 @@ def reminder_send(bot, groupid, text, photo):
188186
logging.exception('While sending to %s:\n%s', groupid, text)
189187

190188

191-
def reminder_edit(bot, groupid, message_id, text, isphoto):
189+
def reminder_edit(bot, groupid, lastmessage, text):
192190
"""Edit a photo caption/plain message."""
193191

192+
message_id = lastmessage['message_id']
194193
logging.info('Editing reminder %s/%s.', groupid, message_id)
195194
try:
196-
if isphoto:
195+
if lastmessage.get('caption'):
197196
return bot.edit_message_caption(chat_id=groupid,
198197
message_id=message_id,
199198
caption=_truncate(text, PHOTO_TEXT_LIMIT),
@@ -204,8 +203,11 @@ def reminder_edit(bot, groupid, message_id, text, isphoto):
204203
text=_truncate(text, PLAIN_TEXT_LIMIT),
205204
parse_mode='HTML',
206205
disable_web_page_preview=True)
206+
except ntelebot.errors.Unmodified:
207+
logging.exception('While editing %s/%s:\n%s', groupid, message_id, text)
208+
return lastmessage # See https://github.com/nmlorg/metabot/issues/108.
207209
except ntelebot.errors.Error:
208-
logging.exception('While editing %s in %s:\n%s', message_id, groupid, text)
210+
logging.exception('While editing %s/%s:\n%s', groupid, message_id, text)
209211

210212

211213
def _truncate(rawtext, length):

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = 'metabot'
3-
version = '0.3.25.1'
3+
version = '0.3.25.2'
44
description = 'Modularized, multi-account bot.'
55
readme = 'README.md'
66
authors = [
@@ -9,7 +9,7 @@ authors = [
99
requires-python = '>=3.8'
1010
dependencies = [
1111
'googlemaps',
12-
'ntelebot >= 0.3.4',
12+
'ntelebot >= 0.4.2',
1313
'pytz',
1414
'PyYAML >= 5.1',
1515
'requests',

0 commit comments

Comments
 (0)