{"id":25397938,"url":"https://github.com/dzarlax/todoist_bot","last_synced_at":"2025-04-11T05:57:37.760Z","repository":{"id":225725042,"uuid":"766683068","full_name":"dzarlax/todoist_bot","owner":"dzarlax","description":"This Telegram Bot integrates with Todoist to add tasks directly from Telegram. It concatenates messages within a timer interval into single tasks and optionally sets today as the due date. Built with Node.js and Docker, it's designed for quick setup and easy use.","archived":false,"fork":false,"pushed_at":"2025-03-25T10:28:01.000Z","size":3049,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T05:57:30.432Z","etag":null,"topics":["docker","docker-compose","node-js","telegram-bot","todoist"],"latest_commit_sha":null,"homepage":"https://dzarlax.dev","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dzarlax.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-03-03T23:00:38.000Z","updated_at":"2025-03-25T10:27:45.000Z","dependencies_parsed_at":"2024-03-04T00:22:12.880Z","dependency_job_id":"0dd06c68-acad-496a-8e07-9d9e4f708299","html_url":"https://github.com/dzarlax/todoist_bot","commit_stats":null,"previous_names":["dzarlax/todoist_bot"],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dzarlax%2Ftodoist_bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dzarlax%2Ftodoist_bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dzarlax%2Ftodoist_bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dzarlax%2Ftodoist_bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dzarlax","download_url":"https://codeload.github.com/dzarlax/todoist_bot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248351405,"owners_count":21089271,"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":["docker","docker-compose","node-js","telegram-bot","todoist"],"created_at":"2025-02-15T22:31:41.400Z","updated_at":"2025-04-11T05:57:37.750Z","avatar_url":"https://github.com/dzarlax.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Todoist Telegram Bot\n\n## Table of Contents\n- [Description ](#description)\n- [Key Features ](#key-features)\n- [Technologies ](#technologies)\n- [Getting Started ](#getting-started)\n  - [Prerequisites ](#prerequisites)\n  - [Installation and Launch ](#installation-and-launch)\n    - [Cloning the Repository ](#cloning-the-repository)\n    - [Setting up docker-compose ](#setting-up-docker-compose)\n    - [Launching the Bot ](#launching-the-bot)\n    - [Checking the Bot's Operation ](#checking-the-bots-operation)\n    - [Stopping the Bot ](#stopping-the-bot)\n- [Описание ](#описание)\n- [Основные функции ](#основные-функции)\n- [Технологии ](#технологии)\n- [Начало работы ](#начало-работы)\n  - [Предварительные требования ](#предварительные-требования)\n  - [Установка и запуск ](#установка-и-запуск)\n    - [Клонирование репозитория ](#клонирование-репозитория)\n    - [Настройка docker-compose ](#настройка-docker-compose)\n    - [Запуск бота ](#запуск-бота)\n    - [Проверка работы бота ](#проверка-работы-бота)\n    - [Остановка бота ](#остановка-бота)\n\n\n## Description\n\nThe Todoist Telegram Bot is an automated assistant designed to integrate your Todoist account with Telegram. It allows you to quickly and conveniently add tasks to your Todoist directly from Telegram using simple text messages or by forwarding messages from other users. The bot automatically identifies the project by the user's name and adds tasks to the corresponding section of your Todoist. Messages sent within the timer interval will be concatenated into a single task. There is also an option to automatically add today's date as the due date for tasks.\n\n## Key Features\n\n- **Automatic task addition**: The bot accepts text messages and forwards them as new tasks to your Todoist. This can be either direct text messages to the bot or messages forwarded from other users. Messages sent within a specified timer interval are concatenated into a single task.\n- **Media support**: The bot can handle various types of media (photos, videos, documents, audio, voice messages, stickers, locations, etc.) and include links to these media files in the task description.\n- **URL detection**: The bot automatically detects URLs in messages and captions, making them clickable in Todoist tasks.\n- **Formatted hyperlink support**: The bot recognizes and preserves formatted hyperlinks from Telegram (where the link text differs from the URL), maintaining their formatting in Todoist tasks.\n- **Message forwarding**: You can forward messages from other users or from other chats to the bot, and it will automatically add these messages as tasks to your Todoist.\n- **Project identification by user name**: Based on the preliminary setup, the bot associates Telegram users with projects in Todoist, automatically placing tasks in the appropriate projects.\n- **Optional due date addition**: You can configure the bot so that each added task automatically receives a due date — the current date.\n- **Easy setup and launch via Docker**: Thanks to the use of Docker and Docker Compose, launching and maintaining the bot does not require complex settings.\n\n\n## Technologies\n\nThe bot is developed in Node.js using the `node-telegram-bot-api` library for interacting with the Telegram API and `axios` for requests to the Todoist API. All of this is wrapped in a Docker container for convenience of deployment and launching.\n\n## Getting Started\n\n### Prerequisites\n\n- An account on [Telegram](https://telegram.org/) for creating a bot\n- An account on [Todoist](https://todoist.com/) to obtain an API token\n- [Docker](https://www.docker.com/) installed (for running in a container)\n\n### Installation and Launch\n\n#### Cloning the Repository\n\nOpen a terminal and execute the following command to clone the repository:\n\n```bash\ngit clone https://github.com/dzarlax/todoist_bot.git\n```\nNavigate to the project directory:\n\n```bash\ncd todoist_bot\n```\n\n#### Setting up docker-compose\nOpen the file docker-compose_example.yml and fill in the following variables:\n\n```makefile\nPROJECT_USERS_PROJECTNAME1: \"@user1,@user2\" # Replace PROJECTNAME1 with the name of the project in Todoist , replace @user1,@user2 with the users whose messages you want to add to this project\nTELEGRAM_TOKEN: your_botfather_token\nTODOIST_TOKEN: your_todoist_api_token\nTIMER: time_for_timer_in_seconds\nADD_DUE_DATE: 'true' or 'false' # Depending on whether you want to automatically set the task's due date to today\n```\nSave the file as docker-compose.yml.\n\n#### Launching the Bot\nLaunch the bot using Docker Compose:\n```bash\ndocker-compose up -d\n```\nAfter executing this command, the bot should start working.\n\nChecking the Bot's Operation\nSend a message to your bot on Telegram to check its operation.\n\n#### Stopping the Bot\nTo stop the bot, execute the following command:\n\n```bash\ndocker-compose down\n```\n\n\n# Todoist Telegram Bot\n\n## Описание\n\nTodoist Telegram Bot — это автоматизированный помощник, предназначенный для интеграции вашего аккаунта Todoist с Telegram. С его помощью вы можете быстро и удобно добавлять задачи в ваш Todoist прямо из Telegram, используя простые текстовые сообщения или пересылая сообщения от других пользователей. Бот автоматически определяет проект по имени пользователя и добавляет задачи в соответствующий раздел вашего Todoist. Сообщения, отправленные в течение интервала таймера, будут объединены в одну задачу. Также есть возможность настройки автоматического добавления даты выполнения задач на сегодняшний день.\n\n## Основные функции\n\n- **Автоматическое добавление задач**: Бот принимает текстовые сообщения и добавляет их как новые задачи в ваш Todoist. Это может быть как написание текста напрямую боту, так и пересылка сообщений от других пользователей. Сообщения, отправленные в пределах установленного времени таймера, будут склеены в одну задачу.\n- **Поддержка медиафайлов**: Бот может обрабатывать различные типы медиа (фотографии, видео, документы, аудио, голосовые сообщения, стикеры, локации и т.д.) и включать ссылки на эти медиафайлы в описание задачи.\n- **Распознавание URL**: Бот автоматически обнаруживает URL в сообщениях и подписях к медиа, делая их кликабельными в задачах Todoist.\n- **Поддержка форматированных гиперссылок**: Бот распознает и сохраняет форматированные гиперссылки из Telegram (где текст ссылки отличается от URL), сохраняя их форматирование в задачах Todoist.\n- **Пересылка сообщений**: Вы можете пересылать сообщения от других пользователей или из других чатов боту, и он автоматически добавит эти сообщения как задачи в ваш Todoist.\n- **Определение проекта по имени пользователя**: На основе предварительной настройки бот ассоциирует пользователей Telegram с проектами в Todoist, автоматически размещая задачи в нужных проектах.\n- **Опциональное добавление даты выполнения**: Вы можете настроить бота так, чтобы каждая добавленная задача автоматически получала срок выполнения — текущую дату.\n- **Легкая настройка и запуск через Docker**: Благодаря использованию Docker и Docker Compose, запуск и обслуживание бота не требует сложных настроек.\n\n\n## Технологии\n\nБот разработан на Node.js с использованием библиотеки `node-telegram-bot-api` для взаимодействия с Telegram API и `axios` для запросов к Todoist API. Всё это обёрнуто в контейнер Docker для удобства развёртывания и запуска.\n\n## Начало работы\n\n### Предварительные требования\n\n- Учетная запись на [Telegram](https://telegram.org/) для создания бота\n- Учетная запись на [Todoist](https://todoist.com/) для получения API токена\n- Установленный [Docker](https://www.docker.com/) (для запуска в контейнере)\n\n### Установка и запуск\n\n#### Клонирование репозитория\n\nОткройте терминал и выполните следующую команду для клонирования репозитория:\n\n```bash\ngit clone https://github.com/dzarlax/todoist_bot.git\n```\nПерейдите в директорию проекта:\n\n```bash\ncd todoist_bot\n```\n#### Настройка docker-compose\n\nОткройте файл docker-compose_example.yml и заполните следующие переменные\n```makefile\nPROJECT_USERS_PROJECTNAME1: \"@user1,@user2\" # PROJECTNAME1 нужно заменить на название проекта в Todoist (если проект на русском, то его нужно взять в кавычки), @user1,@user2 нужно заменить на пользователей сообщения от которых вы хотите добавлять в этот проект\nTELEGRAM_TOKEN: ваш_токен_от_botfather\nTODOIST_TOKEN: ваш_todoist_api_токен\nTIMER: время_для_таймера_в_секундах\nADD_DUE_DATE: 'true' или 'false' # в зависимости от того, хотите ли вы автоматически устанавливать срок выполнения задач на сегодня \n```\nСохраните файл как docker-compose.yml\n\n#### Запуск бота\n\nЗапустите бота с помощью Docker Compose:\n\n```bash\ndocker-compose up -d\n```\nПосле выполнения этой команды бот должен начать работу.\n\nПроверка работы бота\n\nОтправьте сообщение вашему боту в Telegram, чтобы проверить его работу.\n\n#### Остановка бота\nЧтобы остановить бота, выполните следующую команду:\n\n```bash\ndocker-compose down\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdzarlax%2Ftodoist_bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdzarlax%2Ftodoist_bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdzarlax%2Ftodoist_bot/lists"}