Skip to content
Snippets Groups Projects

Save reminders with unique IDs

Merged Bruce Cowan requested to merge 4-persistent-reminder-numbering into master
1 file
+ 22
19
Compare changes
  • Side-by-side
  • Inline
+ 22
19
@@ -45,17 +45,21 @@ class Reminder(BotPlugin):
return time, msg
def _timer_func(self, message, reminder):
self.send(message.to, reminder.text, message)
def _timer_func(self, reminder):
self.send(reminder.message.frm, reminder.text, reminder.message, True)
del self.reminders[self.reminders.index(reminder)]
@staticmethod
def _get_delta(time):
def _set_reminder(self, reminder):
now = datetime.now()
if time < now:
return "**Error**: Bot cannot time travel (yet)"
if reminder.time < now:
raise ValueError("Time is in the past")
delta = (reminder.time - now).seconds + 1
reminder.timer = Timer(delta, self._timer_func, [reminder])
reminder.timer.start()
return (time - now).seconds + 1
self.reminders.append(reminder)
@botcmd(split_args_with=None)
def reminder_add(self, message, args):
@@ -67,13 +71,12 @@ class Reminder(BotPlugin):
if time is None:
return "**Error**: Could not parse time"
delta = self._get_delta(time)
reminder = ReminderType(message, time, text)
reminder.timer = Timer(delta, self._timer_func, [message, reminder])
reminder.timer.start()
self.reminders.append(reminder)
try:
self._set_reminder(reminder)
except ValueError:
return "**Error**: Bot cannot time travel (yet)"
return "Set timer for {}".format(time.strftime('%x %X'))
@@ -93,7 +96,7 @@ class Reminder(BotPlugin):
try:
idx = int(args[0])
edit = self.reminders[idx]
old = self.reminders[idx]
except IndexError:
return "**Error**: reminder '{}' not in database".format(idx)
except ValueError:
@@ -103,13 +106,13 @@ class Reminder(BotPlugin):
if time is None:
return "**Error**: Could not parse time"
edit.message = text
old.timer.cancel()
new = ReminderType(message, time, text)
delta = self._get_delta(time)
edit.timer.cancel()
edit.timer = Timer(delta, self._timer_func, [message, edit])
edit.timer.start()
edit.time = time
try:
self._set_reminder(reminder)
except ValueError:
return "**Error**: Bot cannot time travel (yet)"
return "Edited reminder '{}'".format(idx)
Loading