Skip to content

Commit 3ecbc4b

Browse files
committed
Fix reminder pills.
1 parent 13a5cce commit 3ecbc4b

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

matrix_reminder_bot/reminder.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ async def _fire(self):
104104
logger.debug("Reminder in room %s fired: %s", self.room_id, self.reminder_text)
105105

106106
# Build the reminder message
107-
target = self.target_user if self.target_user else "@room"
108-
message = f"{make_pill(target)} {self.reminder_text}"
107+
target = make_pill(self.target_user) if self.has_target() else "@room"
108+
message = f"{target} {self.reminder_text}"
109109

110110
# If this reminder has an alarm attached...
111111
if self.alarm:
@@ -129,7 +129,14 @@ async def _fire(self):
129129
ALARMS[(self.room_id, self.reminder_text.upper())] = self.alarm_job
130130

131131
# Send the message to the room
132-
await send_text_to_room(self.client, self.room_id, message, notice=False)
132+
await send_text_to_room(
133+
self.client,
134+
self.room_id,
135+
message,
136+
notice=False,
137+
mentions_room=not self.has_target(),
138+
mentions_user_ids=[self.target_user] if self.has_target() else None,
139+
)
133140

134141
# If this was a one-time reminder, cancel and remove from the reminders dict
135142
if not self.recurse_timedelta and not self.cron_tab:
@@ -141,14 +148,21 @@ async def _fire_alarm(self):
141148
logger.debug("Alarm in room %s fired: %s", self.room_id, self.reminder_text)
142149

143150
# Build the alarm message
144-
target = self.target_user if self.target_user else "@room"
151+
target = make_pill(self.target_user) if self.has_target() else "@room"
145152
message = (
146153
f"Alarm: {target} {self.reminder_text} "
147154
f"(Use `{CONFIG.command_prefix}silence [reminder text]` to silence)."
148155
)
149156

150157
# Send the message to the room
151-
await send_text_to_room(self.client, self.room_id, message, notice=False)
158+
await send_text_to_room(
159+
self.client,
160+
self.room_id,
161+
message,
162+
notice=False,
163+
mentions_user_ids=[self.target_user] if self.has_target() else [],
164+
mentions_room=self.has_target(),
165+
)
152166

153167
def cancel(self, cancel_alarm: bool = True):
154168
"""Cancels a reminder and all recurring instances
@@ -177,6 +191,10 @@ def cancel(self, cancel_alarm: bool = True):
177191
if self.alarm_job and SCHEDULER.get_job(self.alarm_job.id):
178192
self.alarm_job.remove()
179193

194+
def has_target(self) -> bool:
195+
"""Returns whether the reminder has a target user."""
196+
return self.target_user is not None
197+
180198

181199
# Global dictionaries
182200
#

0 commit comments

Comments
 (0)