Skip to content

pururus/telegram-todo-with-gpt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

123 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telegram Todo with GPT

Описание проекта

Телеграм бот, который по сообщению в свободном формате формирует событие и отмечает его в Google Calendar или добавляет задачу в Todoist. Бот помогает сэкономить время, обрабатывая неструктурированные текстовые запросы и создавая удобные напоминания и задачи.


Примерный сценарий взаимодействия

  1. Первоначальная настройка:

    • Пользователь отправляет /start, и бот предлагает ввести идентификаторы календаря и Todoist.
    • После подтверждения настроек бот приветствует пользователя и предлагает помощь.
  2. Добавление события:

    • Пользователь отправляет сообщение вроде “Запланируй встречу с Олегом завтра в 15:20”.
    • Бот парсит сообщение, распознавая ключевые элементы (время, название, место) и предлагает пользователю уточнить или подтвердить.
    • После подтверждения бот создает событие в Google Calendar и отправляет подтверждение с деталями.
  3. Добавление задачи:

    • Пользователь пишет “Напомни сходить за продуктами в воскресенье”.
    • Бот парсит по ключевым словам и создает задачу в Todoist. Пользователю приходит сообщение с подтверждением.

Структура проекта

image

Telegram Bot:

  • Пользовательский интерфейс. При первом использовании запрашивает у пользователя ссылки на его календарь и todo-list. Полученную информацию регистрирует в базе данных
  • Принимает сообщения от пользователя и формирует из них запрос, содержащий текст сообщения, id пользователя, время и дату сообщения, после чего отправляет запрос процессору.
  • После выполнения запроса возвращает пользователю ответ.

Registration module: От модуля регистрации было принято отказаться.

  • Принимает данные регистрации от пользователя, проверяет их на корректность и, при корректрости, отправляет их в БД, иначе возвращает сообщение об ошибке

База данных:

  • Содержит информацию о пользователях: id в telegram, ссылки на Notion и Google Calendar, статус регистрации

GPT parser

  • Обрабатывает сообщение от пользователя, вместе с датой и временем сообщения
  • Формирует форматированный запрос
  • Отправляет запрос в Processor

Processor: От процессора было решено отказаться. Запросы обрабатыаются самими модулями, функции вызываются в теле бота.

  • Обрабатывает запрос
  • Получает данные из БД
  • Отправляет данные в нужный модуль
  • Возвразает в Telegram module возможные сообщения об ошибке

Todoist module и Google Calendar module:

  • Формирует событие или задачу

Распределение по ролям

  • Святослав Полонский (tg: @pururus)

    • Работа с запросами через API GPT
    • Работа с Google Calendar
    • Работа с базой данных пользователей
  • Лиза Зорькина (tg: @lizyn)

    • Frontend (сам бот)
    • API Todoist

Отчет

Что сделано

Сейчас все модули уже работают, но все еще есть некоторые моменты, требующие доработки.

  • Бот обрабатывает регистрацию пользователей, а также запросы в свободном формате, определяя их тип.

  • Парсер хорошо определяет тип запроса и название мероприятия/цели.

  • Также есть возможность указывать, какой тип запроса отправляется, через соответствующие кнопки.

Что нужно сделать

Основные задачи

  1. Документация:

    • Добавить описание ко всем функциям, методам и классам.
  2. Оптимизация кода:

    • Почистить код от избыточных условных конструкций и повторений.
  3. Улучшение парсера:

    • Доработать парсер для более точного распознавания времени, даты и формата задач.
  4. Улучшение UI:

    • Добавить персонализированные сообщения об ошибках и успешных действиях:
      • Например, "Не удалось добавить событие. Проверьте формат времени.".
  5. Команды для обновления идентификаторов:

  • Добавить команды /update_calendar и /update_todoist, чтобы пользователь мог изменить свой идентификатор Google Calendar или API-токен Todoist:
  1. Асинхронность:

    • Перевести работу с базой данных и API на асинхронные функции.
  2. Проверка валидности идентификаторов:

    • Для Google Calendar: Проверять существование календаря через API.
    • Для Todoist: Отправлять тестовый запрос для проверки токена.

Дополнительные задачи

  1. Добавление новых команд:
  • Например, команда /help для справки по использованию бота.
  • Команда /status для проверки текущих идентификаторов.
  1. Расширение функционала парсера:
    • Реализовать обработку повторяющихся событий (например, "каждую неделю").

По идее, успеваем это доделать к защите))

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages