{"id":15694221,"url":"https://github.com/janmerhar/productivity_bot","last_synced_at":"2025-07-27T12:04:15.959Z","repository":{"id":173146872,"uuid":"385706217","full_name":"janmerhar/productivity_bot","owner":"janmerhar","description":"A self-hosted discord bot written in discord.py using slash commands that utulizes Toggl, TickTick and Google Calendar API","archived":false,"fork":false,"pushed_at":"2023-12-04T18:17:05.000Z","size":6376,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"python","last_synced_at":"2025-03-31T18:05:48.075Z","etag":null,"topics":["discord","discord-py","google-calendar","slash-commands","ticktick","toggl"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/janmerhar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-13T18:54:56.000Z","updated_at":"2024-07-19T15:13:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"86a2a7fa-085c-4031-b3aa-711798c50c53","html_url":"https://github.com/janmerhar/productivity_bot","commit_stats":null,"previous_names":["janmerhar/productivity_bot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janmerhar%2Fproductivity_bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janmerhar%2Fproductivity_bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janmerhar%2Fproductivity_bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janmerhar%2Fproductivity_bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/janmerhar","download_url":"https://codeload.github.com/janmerhar/productivity_bot/tar.gz/refs/heads/python","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253149322,"owners_count":21861716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["discord","discord-py","google-calendar","slash-commands","ticktick","toggl"],"created_at":"2024-10-03T18:54:39.499Z","updated_at":"2025-05-08T20:49:24.054Z","avatar_url":"https://github.com/janmerhar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About The project\n\nThe 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.\n\nWith the productivity bot, users can:\n\n- 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.\n- 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.\n- 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.\n\n## Built with\n\n- Python\n- Discord.py\n- Google Calendar API\n- TickTick API\n- Toggl API\n\n# Getting started\n\nTo get started you need to complete the following steps.\n\n## Prerequisites\n\n- Python 3.10.7 or greater\n- MongoDB database instance\n- Discord bot token\n- Google Calendar API credentials\n- TickTick API credentials\n\n## Installation\n\n### Configuration\n\nIn 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:\n\n```bash\nDISCORD_TOKEN\n\nTOGGL_TOKEN\n\nTICK_ID\nTICK_SECRET\nTICK_URI\nTICK_EMAIL\nTICK_PASSWORD\n\nMONGO_URI\n```\n\n### Setup\n\n1. Provide `.env` file in the root directory of the project\n2. Install Python and Pip\n3. Clone the repository\n   `git clone https://github.com/janmerhar/productivity_bot`\n4. Install the required packages\n   `pip install -r packages.txt`\n\n## Usage\n\nTo start the bot run the following command:\n`python main.py`\n\n### Commands\n\nToggl commands:\n\n- `aboutme` Returns information about the Toggl user.\n- `start` Starts a new Toggl timer with an optional project and description.\n- `timer` Returns information about the active Toggl timer.\n- `stop` Stops the active Toggl timer.\n- `inserttimer` Inserts a past Toggl timer.\n- `savetimer` Saves a Toggl timer with an optional workspace ID, billable status, description, project ID, and tags.\n- `removetimer` Removes a saved Toggl timer.\n- `startsaved` Starts a saved Toggl timer by its identifier.\n- `populartimers` Returns the most popular Toggl timers.\n- `timerhistory` Returns a history of Toggl timers.\n- `newproject` Creates a new Toggl project with a given name.\n- `workspaceprojects` Returns all Toggl projects in the current workspace.\n- `getproject` Returns a Toggl project by its ID.\n- `createalias` Creates an alias for a Toggl command with optional arguments.\n\nTickTick coommands:\n\n- `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.\n- `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.\n- `complete` Marks a task as completed in TickTick. This command takes one required parameter: name (the name of the task to be completed).\n- `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.\n- `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).\n- `deletetask` Deletes a task from TickTick. This command takes one required parameter: name (the name of the task to be deleted).\n- `getlist` Returns information about a list in TickTick. This command takes one required parameter: identifier (the name of the list to retrieve).\n- `newlist` Creates a new list in TickTick with optional parameters. This command takes several optional parameters, including name, color, project_type, and folder_id.\n- `changelist` Updates an existing list in TickTick with optional parameters. This command takes several optional parameters, including name, color, project_type, and folder_id.\n- `deletelist` Deletes a list from TickTick. This command takes one required parameter: identifier (the name of the list to be deleted).\n\nAlias commands:\n\n- `usealias` Shortcuts use alias. This command takes one required parameter: alias (the alias of the command to be used).\n- `findaliases` Shortcuts find aliases. This command takes one required parameter: alias (the alias of the command to be found).\n- `popularalias` Most popular aliases. This command takes one optional parameter: n (the number of most popular aliases to display).\n\n### Demo\n\n![Toggl Example](docs/media/toggl_example.gif)\n\n## Contributing\n\nTo contribute to this project follow these steps:\n\n1. Fork the repository\n2. Create feature branch (`git checkout -b feature/NewFeature`)\n3. Commit changes (`git commit -m 'Add some changes'`)\n4. Push to the branch (`git push origin feature/NewFeature`)\n5. Open a pull request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanmerhar%2Fproductivity_bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjanmerhar%2Fproductivity_bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanmerhar%2Fproductivity_bot/lists"}