def periodicFunction(self): bot = self.bot # process reminders # Get reminder data from DB reminders = self.timetable_db.getUnnotifiedSubscriptions() for event in reminders: chat_id = event[0] event_id = event[1] status = event[2] event_time = TimetableDatabase.stringTimeToDatetime(event[3]) cur_time = self.timetable_db.getOffsetTime() event_name = self.timetable_db.getEventData(event_id)['name'] if status < 2: # this event still has reminders if (cur_time-event_time).days >= 0: # Remind when an event starts if self.user_params.getEntry(chat_id, 'subscribed') == 1: bot.sendMessage(chat_id=chat_id , message="{0} is starting now! \n/event{1}".format(event_name, event_id) , key_markup="Same" ) self.timetable_db.setReminderStatus(chat_id, event_id, 2) if status < 1: # preliminary reminder is not triggered yet remind_period = self.user_params.getEntry(chat_id,'remind_period') till_event_delta = event_time-cur_time if self.user_params.getEntry(chat_id,'subscribed') == 1 \ and till_event_delta.days == 0 \ and till_event_delta.seconds <= remind_period * 60: # Set status to 1 and trigger preliminary reminder self.timetable_db.setReminderStatus(chat_id, event_id, 1) bot.sendMessage(chat_id=chat_id , message="{0} is starting in {2} minutes!\n/event{1}" .format(event_name, event_id,till_event_delta.seconds//60) , key_markup="Same" )