Skip to content

Task Bot

Task Bot (hereinafter the “Application”) is a user-installable Discord application which allows you to manage your tasks anywhere on Discord: in a server, in a DM with the bot, in DMs with your friends… The possibilities are endless.

Task management with this bot is an individual feature. If you need server-level task management, such as for a development team, please reach out to us in our support server to discuss pricing.

1. User Documentation

This section is for those interacting with a live instance of the Application.

1.1. User Interactivity

Interaction with the Application is done through a series of slash commands (“Commands”) exposed via Discord’s native UI. The primary function of the Application is to allow users to create and manage “tasks”, or records of objectives that must be completed.

1.1.1. assign Command

The /assign command allows you to assign a specific Discord user to a task. A task may have multiple assignees.

A discord slash command named Assign, taking a task and assignee argument

1.1.1.1. Required Arguments
  • task: An integer greater than 0, which is the unique identifier of the task you want to edit.
  • assignee: The user to assign to (or unassign from) a ticket.
1.1.1.2. Optional Arguments
  • null
1.1.1.3. Execution

Once the command has been called, a database query will be made to confirm a task exists with the given task ID.

If a task does not exist, you will be notified.

If a task does exist, the Application will determine whether the assignee has been added to the task previously or not. If the assignee is already on the task, they will be removed. If they are not on the task, they will be assigned. You will be shown a confirmation message indicating which action the Application performed.

1.1.2. complete Command

The /complete command allows you to mark a task as completed. Once completed, a task can not be uncompleted. It can still be modified and deleted.

A discord slash command named Complete, taking a task argument

1.1.2.1. Required Arguments
  • task: An integer greater than 0, which is the unique identifier of the task you want to edit.
1.1.2.2. Optional Arguments
  • null
1.1.2.3. Execution

Once the command has been called, a database query will be made to confirm a task exists with the given task ID.

If a task does not exist, you will be notified.

If a task does exist, the Application will mark the task as completed and inform you of the success.

1.1.3. create Command

The /create command allows you to create a new task.

A discord slash command named Create, which takes no arguments

1.1.2.1. Required Arguments
  • null
1.1.2.2. Optional Arguments
  • null
1.1.2.3. Execution

Once the command has been called, the Application will construct and show a Discord-powered modal form. There are three fields you must complete.

A discord modal titled New Task, with title, description, and due date fields.

  • TITLE: The title of the task. This should be a short summary.
  • DESCRIPTION: The description of the task. This may be longer, and supports multiple lines.
  • DUE DATE: The date the task is due. This must be a format that can be parsed, such as September 1, 2000.

When you submit the modal form, the Application will insert a new task into the database and assign it an incremental ID. It will provide this ID to you as confirmation.

1.1.4. delete Command

The /delete command allows you to “delete” a task from the database. The task record will remain present, as the incremental ID logic requires records to persist. All information will be scrubbed from the task and replaced with default values.

A discord slash command named Delete, which takes a task argument

1.1.4.1. Required Arguments
  • task: The numerical identifier of the task you wish to delete.
1.1.4.2. Optional Arguments
  • null
1.1.4.3. Execution

Once the command has been called, a database query will be made to confirm a task exists with the given task ID.

If a task does not exist, you will be notified.

If a task does exist, the Application will mark the task as deleted, and set the following default values:

{
"assignees": [],
"deleted": true,
"description": "This task has been deleted.",
"dueAt": Date,
"priority": "deleted",
"tags": [],
"title": "Deleted Task",
}

You will receive confirmation when the deletion is complete.

1.1.5. list Command

The list command allows you to view your tasks, optionally applying filters to narrow the results.

A discord slash command named List, which takes priority, tag, assignee, and completed arguments

1.1.5.1. Required Arguments
  • null
1.1.5.2. Optional Arguments
  • priority: Only show tasks which are at this priority level. If omitted, will show all priorities.
  • tag: Only show tasks whose tags include this tag. If omitted, will not restrict query by any tags.
  • completed: Show either complete or incomplete tasks. If omitted, will show incomplete tasks.

Guild-level private instances will also be able to filter by assignee.

1.1.5.3. Execution

The Application will construct your selected filters into a database query and use that to fetch the tasks.

If your query returns no tasks, the Application will notify you to adjust your filters. Otherwise, you will receive a list of task titles and IDs.

1.1.6. priority Command

The priority command allows you to modify the priority level of a task. A task may have one of the following priorities: Low, Medium, High, Critial, and None.

A discord slash command named Priority, which takes task and priority arguments

1.1.6.1. Required Arguments
  • null
1.1.6.2. Optional Arguments
  • null
1.1.6.3. Execution

Once the command has been called, a database query will be made to confirm a task exists with the given task ID.

If a task does not exist, you will be notified.

If a task does exist, the Application will update the priority field and send you a confirmation.

1.1.7. tag Command

The /tag command allows you to assign a specific tag to a task. A task may have multiple tags.

A discord slash command named Tag, taking a task and tag argument

1.1.7.1. Required Arguments
  • task: An integer greater than 0, which is the unique identifier of the task you want to edit.
  • tag: The case-sensitive tag to apply.
1.1.7.2. Optional Arguments
  • null
1.1.7.3. Execution

Once the command has been called, a database query will be made to confirm a task exists with the given task ID.

If a task does not exist, you will be notified.

If a task does exist, the Application will determine whether the tag has been added to the task previously or not. If the tag is already on the task, it will be removed. If it is not on the task, it will be added. You will be shown a confirmation message indicating which action the Application performed.

1.1.8. update Command

The /update command allows you to update an existing task.

A discord slash command named update, which takes no arguments

1.1.8.1. Required Arguments
  • null
1.1.8.2. Optional Arguments
  • null
1.1.8.3. Execution

Once the command has been called, the Application will construct and show a Discord-powered modal form. There is one field you MUST complete, and three fields you MAY complete.

A discord modal titled Update Task, with title, description, and due date fields.

  • TASK NUMBER: The numerical identifier of the task you wish to update.
  • TITLE: The title of the task. This should be a short summary.
  • DESCRIPTION: The description of the task. This may be longer, and supports multiple lines.
  • DUE DATE: The date the task is due. This must be a format that can be parsed, such as September 1, 2000.

If you do not want to update a field, leave it blank and the Application will not modify it.

When you submit the modal form, the Application will construct an update query from your fields. It will then try to update the task in the database, using the ID you provide. If it fails to find a record with that ID, it will notify you. Otherwise, it will send a confirmation message.

1.1.9. view Command

The view command allows you to query a task by its ID and see all the information on that task.

A discord slash command named view, which accepts a single id argument

1.1.9.1. Required Arguments
  • id: The numerical ID of the task you wish to view.
1.1.9.2. Optional Arguments
  • null
1.1.9.3. Execution

When you run the command, the bot will fetch the task matching your specified ID from the database. If no task is found, the bot will notify you.

A discord embed showing the details of a task, including the title, description, due date, tags, and priority

Otherwise, the bot will display an embed containing all of the information about that task.

1.2. User Access Permissions

If you need to restrict access to specific commands based on a user’s permission levels, you can do so through Discord’s native UI.

Discord's command permissions screen, with the everyone role denied access, the Staff role granted access, and the complete command indicating it has overrides

This functionality will allow you to hide commands from users with or without specific roles, or grant scoped access to individual commands and channels. For more instructions on how to leverage this tool, please review Discord’s support article for command permissions.

1.3. Application Access Permissions

The Application should not require any specific Discord permissions to function in your community.

1.4. Errors

We strive to deliver reliable and quality applications, but we are not perfect. If the Application generates an error, it will provide you with a Snowflake ID and a link to our support server.

When you join the server and share the ID with us, we will be able to look up the specific log and determine the cause of the error.

Note that not all errors are caused by the Application. Errors can occur for many reasons, including misconfigured permissions on the user side, external platform outages, and more. Our support team will be happy to assist you with any errors that you encounter, but we kindly ask that you demonstrate patience toward our team (many of whom are volunteers).

2. Technical Documentation

This section is for those interested in running their own instance of the Application.

This section is for expansions to our legal policies specific to the Application.