@@ -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