import logging import peewee import datetime from db.queries import skip_day_put, skip_day_delete, skip_days_upcoming from .telegram import TelegramCommand logger = logging.getLogger(__name__) class SkipDayAddCommand(TelegramCommand): command_text = "/skip_day" async def exec_inner(self, text, update, session, forResponse=None, reply=None): try: yield "Please enter a skip day" response = await forResponse() skip_day = datetime.date.fromisoformat(response) skip_day_put(skip_day) yield f"Skip day {response} has been added" except ValueError: yield "That date was not valid" except peewee.IntegrityError: yield "That day has already been added" class SkipDayDeleteCommand(TelegramCommand): command_text = "/skip_day_delete" async def exec_inner(self, text, update, session, forResponse=None, reply=None): try: yield "Please enter a skip day to delete" response = await forResponse() skip_day = datetime.date.fromisoformat(response) rows = skip_day_delete(skip_day) if rows > 0: yield f"Skip day {skip_day} has been deleted" else: yield f"Skip day {skip_day} does not exist" except ValueError: yield "That date was not valid" class SkipDaysCommand(TelegramCommand): command_text = "/skip_days" async def exec_inner(self, text, update, session, forResponse=None, reply=None): dates = skip_days_upcoming() yield ("Upcoming skip days -\n" + "\n".join([d.date.isoformat() for d in dates])) commands = [ SkipDayAddCommand(), SkipDayDeleteCommand(), SkipDaysCommand() ]