def stop_task(context, owner: Message.author, message): with Db() as db: task_ids = get_list_items(db, owner) task_id = find_task_id_in_list(db, task_ids, message) if db.get_task_state(task_id) != "STARTED": return "That task hasn't been started.", None, None db.stop_task(task_id) return get_display_mode(context, db, owner, f"{owner.name} stopped task '{message}'")
def remove_tasks(context, owner: Message.author, message): with Db() as db: task_ids = get_list_items(db, owner) for item in message.split("\n"): task_id = find_task_id_in_list(db, task_ids, item) task_ids.remove(task_id) db.update_list_items(task_ids, owner.id) return get_display_mode(context, db, owner, f"{owner.name} removed tasks from their list")
def uncheck_task(context, owner: Message.author, message): with Db() as db: task_ids = get_list_items(db, owner) task_id = find_task_id_in_list(db, task_ids, message) if db.get_task_state(task_id) != "CHECKED": return "That task hasn't been completed.", None, None db.uncomplete_task(task_id) return get_display_mode(context, db, owner, f"{owner.name} unchecked task '{message}'")
def start_task(context, owner: Message.author, message): with Db() as db: task_ids = get_list_items(db, owner) task_id = find_task_id_in_list(db, task_ids, message) if db.get_task_state(task_id) == "STARTED": return "That task is already started.", None, None if "STARTED" in db.get_task_states(task_ids): return "You can only have one started task at a time.", None, None db.start_task(task_id) return get_display_mode(context, db, owner, f"{owner.name} started task '{message}'")
def _reorder_task(context, owner: Message.author, item: str, position: int): with Db() as db: task_ids = get_list_items(db, owner) task_id = find_task_id_in_list(db, task_ids, item) task_ids.remove(task_id) if position == -1: task_ids.append(task_id) else: task_ids.insert(position - 1, task_id) db.update_list_items(task_ids, owner.id) return get_display_mode( context, db, owner, f"{owner.name} moved task '{item}' to {position}")
def check_list(context, owner: Message.author, message): with Db() as db: list_items = get_list_items(db, owner) tasks = message.split(" ") if not all([s.isdigit() for s in tasks]): return "All arguments must be positions of tasks, not names.", None, None task_ids = [] for task in tasks: task_id = find_task_id_in_list(db, list_items, task) if db.get_task_state(task_id) == "CHECKED": return f"Task {task} has already been finished.", None, None task_ids.append(task_id) for task_id in task_ids: db.complete_task(task_id) return get_display_mode(context, db, owner, f"{owner.name} finished tasks '{message}'")