예제 #1
0
파일: utilities.py 프로젝트: suufi/rowboat
 def cmd_remind_clear(self, event):
     count = Reminder.delete_for_user(event.author.id)
     return event.msg.reply(
         ':ok_hand: I cleared {} reminders for you'.format(count))
예제 #2
0
    def cmd_remind_clear(self, event, reminder='all'):
        if reminder == 'all':
            count = Reminder.count_for_user(event.author.id)

            if Reminder.count_for_user(event.author.id) == 0:
                return event.msg.reply('<:{}> cannot clear reminders when you don\'t have any'.format(RED_TICK_EMOJI))
            
            msg = event.msg.reply('Ok, clear {} reminders?'.format(count))
            msg.chain(False).\
                add_reaction(GREEN_TICK_EMOJI).\
                add_reaction(RED_TICK_EMOJI)

            try:
                mra_event = self.wait_for_event(
                    'MessageReactionAdd',
                    message_id=msg.id,
                    conditional=lambda e: (
                        e.emoji.id in (GREEN_TICK_EMOJI_ID, RED_TICK_EMOJI_ID) and
                        e.user_id == event.author.id
                    )).get(timeout=10)
            except gevent.Timeout:
                return
            finally:
                msg.delete()

            if mra_event.emoji.id != GREEN_TICK_EMOJI_ID:
                return
            
            count = Reminder.delete_all_for_user(event.author.id)
            return event.msg.reply(':ok_hand: I cleared {} reminders for you'.format(count))
        else:
            try:
                # stupid catch because python sucks
                try:
                    reminder = int(reminder)
                except:
                    return event.msg.reply('cannot convert `{}` to `int`'.format(S(reminder)))
                
                r = Reminder.select(Reminder).where(
                    (Reminder.message_id << Reminder.with_message_join((Message.id, )).where(
                        Message.author_id == event.author.id
                    )) & (Reminder.id == reminder)
                ).get()
            except Reminder.DoesNotExist:
                return event.msg.reply('<:{}> cannot find reminder #{}'.format(RED_TICK_EMOJI, reminder))
            
            msg = event.msg.reply('Ok, clear reminder #{}?'.format(reminder))
            msg.chain(False).\
                add_reaction(GREEN_TICK_EMOJI).\
                add_reaction(RED_TICK_EMOJI)

            try:
                mra_event = self.wait_for_event(
                    'MessageReactionAdd',
                    message_id=msg.id,
                    conditional=lambda e: (
                        e.emoji.id in (GREEN_TICK_EMOJI_ID, RED_TICK_EMOJI_ID) and
                        e.user_id == event.author.id
                    )).get(timeout=10)
            except gevent.Timeout:
                return
            finally:
                msg.delete()

            if mra_event.emoji.id != GREEN_TICK_EMOJI_ID:
                return
            
            Reminder.delete_for_user(event.author.id, r.id)
            return event.msg.reply(':ok_hand: I cleared reminder #{} for you'.format(r.id))
예제 #3
0
 def cmd_remind_clear(self, event):
     count = Reminder.delete_for_user(event.author.id)
     raise CommandSuccess('I cleared {} reminders for you'.format(count))