The productivity bot is a self-hosted discord bot that helps users manage their time, tasks, and events more effectively. The bot connects to three popular APIs: Toggl, TickTick, and Google Calendar, and allows users to access their features through various commands.
With the productivity bot, users can:
- Track their time entries with Toggl. Users can start, stop, and view their time entries on Toggl, a time tracking app that helps users monitor their work hours and productivity.
- Manage their tasks and lists with TickTick. Users can create, delete, and view their tasks and lists on TickTick, a task management app that helps users organize their to-do lists and deadlines.
- Schedule and view their events and calendars with Google Calendar. Users can create, delete, and view their events and calendars on Google Calendar, a calendar app that helps users plan their meetings and appointments.
- Python
- Discord.py
- Google Calendar API
- TickTick API
- Toggl API
To get started you need to complete the following steps.
- Python 3.10.7 or greater
- MongoDB database instance
- Discord bot token
- Google Calendar API credentials
- TickTick API credentials
In order to provide API access to the bot, you need to create a .env
file in the root directory of the project and add the following variables:
DISCORD_TOKEN
TOGGL_TOKEN
TICK_ID
TICK_SECRET
TICK_URI
TICK_EMAIL
TICK_PASSWORD
MONGO_URI
- Provide
.env
file in the root directory of the project - Install Python and Pip
- Clone the repository
git clone https://github.com/janmerhar/productivity_bot
- Install the required packages
pip install -r packages.txt
To start the bot run the following command:
python main.py
Toggl commands:
aboutme
Returns information about the Toggl user.start
Starts a new Toggl timer with an optional project and description.timer
Returns information about the active Toggl timer.stop
Stops the active Toggl timer.inserttimer
Inserts a past Toggl timer.savetimer
Saves a Toggl timer with an optional workspace ID, billable status, description, project ID, and tags.removetimer
Removes a saved Toggl timer.startsaved
Starts a saved Toggl timer by its identifier.populartimers
Returns the most popular Toggl timers.timerhistory
Returns a history of Toggl timers.newproject
Creates a new Toggl project with a given name.workspaceprojects
Returns all Toggl projects in the current workspace.getproject
Returns a Toggl project by its ID.createalias
Creates an alias for a Toggl command with optional arguments.
TickTick coommands:
newtask
Adds a new task to TickTick with optional parameters. This command takes several optional parameters, including project_id, content, desc, start_date, due_date, time_zone, reminders, repeat, priority, sort_order, and items.newsubtask
Adds a new subtask to an existing task in TickTick with optional parameters. This command takes several optional parameters, including parent, project_id, content, desc, start_date, due_date, time_zone, reminders, repeat, priority, sort_order, and items.complete
Marks a task as completed in TickTick. This command takes one required parameter: name (the name of the task to be completed).updatetask
Updates an existing task in TickTick with optional parameters. This command takes several optional parameters, including name, project_id, content, desc, start_date, due_date, time_zone, reminders, repeat, priority, sort_order, and items.movetask
Moves a task to a different list in TickTick. This command takes two required parameters: task_details (the name of the task to be moved) and list (the name of the destination list).deletetask
Deletes a task from TickTick. This command takes one required parameter: name (the name of the task to be deleted).getlist
Returns information about a list in TickTick. This command takes one required parameter: identifier (the name of the list to retrieve).newlist
Creates a new list in TickTick with optional parameters. This command takes several optional parameters, including name, color, project_type, and folder_id.changelist
Updates an existing list in TickTick with optional parameters. This command takes several optional parameters, including name, color, project_type, and folder_id.deletelist
Deletes a list from TickTick. This command takes one required parameter: identifier (the name of the list to be deleted).
Alias commands:
usealias
Shortcuts use alias. This command takes one required parameter: alias (the alias of the command to be used).findaliases
Shortcuts find aliases. This command takes one required parameter: alias (the alias of the command to be found).popularalias
Most popular aliases. This command takes one optional parameter: n (the number of most popular aliases to display).
To contribute to this project follow these steps:
- Fork the repository
- Create feature branch (
git checkout -b feature/NewFeature
) - Commit changes (
git commit -m 'Add some changes'
) - Push to the branch (
git push origin feature/NewFeature
) - Open a pull request