gear-orders/telegram/commands.py

59 lines
1.6 KiB
Python

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()
]