View on GitHub

Botling

Botling User Guide

Botling demo

Botling is a task management chatbot that helps you track your to-dos, deadlines, and events via simple yet effective text commands. All your tasks are automatically saved, and even sorted according to priority.

Table of Contents

  1. Quick Start
  2. Features
    1. Help
    2. Bye
    3. List
    4. Find
    5. Mark / Unmark / Delete
    6. To-Dos
    7. Deadlines
    8. Events
    9. Date Specifications
    10. Sorting
    11. Data Storage
  3. Known Issues
  4. Image Sources

Quick Start

  1. Ensure you have Java 17 or above installed in your computer.

  2. Download the latest .jar file here.
  3. Copy the file into your desired folder, and double-click on the file to run the application.

  4. Alternatively, run java -jar Botling.jar in your console to run the application. You should see a similar interface appear as shown above.

  5. Easily get started with Botling by typing help into the chat!
    All commands and their arguments will be shown.

  6. To get started, it is as easy as this: todo chores. Botling will immediately add your task to its list!

  7. For more details, refer to Features.

Features

:information_source: Notes about the command format:

  • Words demarcated with <> are parameters to be supplied by the user.

  • Words following / (e.g. /by in deadline) are commands. If the user input contains multiple commands (e.g. deadline assignment 1 /by today /by tomorrow /by the day after, the first command (in this case /by) will be greedily chosen.
    The remaining input: today /by tomorrow /by the day after will be used as the parameter.
    // Demonstration of parameter seperation.
    Task name: assignment 1
    Deadline today /by tomorrow /by the day after
    
  • Parameters must be provided in sequential order.

  • Extraneous parameters for commands that do not take in parameters (such as help, list, exit and clear) will be not be ignored.
    Instead they will be unrecognized.

Help Command

help
Provides a quick reminder of all the commands implemented. Help command

Bye Command

bye
Closes the application.

List Command

list
Lists all current tasks that is recorded by Botling.

Find Command

find <name>
Lists all recorded tasks that contains <name> within its task name.
This method is case-insensitive.

Mark / Unmark / Delete Commands

mark <X>, unmark <X>, delete <X>
These commands follow the same format, where only the index of the task needs to be specified.
Note that the application uses 1 based indexing, as provided by the list and the find commands.

To-do Command

todo <name>
A basic task labelled <name>, representing a to-do with no urgency.

Deadline Command

deadline <name> /by <deadline>
A deadline task labelled <name>, with the deadline at <deadline>.
For information on the date specification of <deadline>, refer to Date Specification.

Event Command

event <name> /from <start> /to <end>
An event labelled <name>, that starts from <start> till <end>.
For information on the date specification of <start> and <end>, refer to Date Specification.

Date Specification

Although deadline and event commands can take in date time formats, it is not compulsory.
Currently, the following date time formats are supported:

Notes:

Sorting Tasks

By default, Botling comes with a basic sorting function to help you prioritize your tasks! The rules are as follows:

Data Storage

The data is located under ./data/history.txt.
This file can be ported between different applications to be used by Botling.

Known Issues

Selectable and colorbale text
Due to the fact that JavaFX WebView objects are not recommended for this project due to its large size, making selectable and colorable text within the chatbot requires an overlay of a TextArea object onto a TextFlow object. Due to the fact that their proportions are innately different, the margins have to be hardcoded. Botling is optimized for 1920x1080 at 125% screen scale. Resolutions and scales differing from this are likely to cause the selected text to be misaligned from the displayed text. Thus, it is recommended that the user uses the select all option (as shown in the demo) to copy the text if required. This specific part of the project was with the help of the following sources:

(P.S. If you have a more elegant solution, please feel free to contact me. Thank you!)

Image Sources

Images were obtained from the following links: