Skip to content

Этот проект был сделан just for fun, я увидел видео об интеграции Obsidian с телеграмм и даже не смотря его решил сделать свою реализацию)

License

Notifications You must be signed in to change notification settings

meflove/telegram-obsidian

Repository files navigation

🧠 Telegram-Obsidian Bot

Python 3.12 Aiogram 3.20+ License

Telegram-бот для управления заметками Obsidian позволяет создавать и просматривать заметки прямо из Telegram. Интегрируется с локальным хранилищем Obsidian, сохраняя все преимущества работы с Markdown-файлами.

✨ Основные функции

  • 📝 Создание заметок с метаданными (теги, дата создания)
  • 🌳 Просмотр структуры хранилища в виде ASCII-дерева
  • 🏷️ Управление тегами через простой интерфейс
  • 🔒 Административный контроль (только для авторизованных пользователей)
  • 📁 Автосохранение в указанную папку Obsidian Vault

🚀 Технологический стек

  • Python 3.12 (обязательно)
  • Aiogram 3.20+ - асинхронный фреймворк для Telegram ботов
  • aiofiles - асинхронная работа с файловой системой
  • Pathlib - кросс-платформенные пути к файлам
  • Logging - продвинутая система логирования с ротацией файлов

⚙️ Установка и настройка

1. Клонирование репозитория

git clone https://github.com/meflove/telegram-obsidian.git
cd telegram-obsidian

2. Установка зависимостей

Рекомендуется

uv venv
source .venv/bin/activate
uv sync

или

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

3. Конфигурация бота

  1. Создайте config.py на основе образца:
cp config.py.sample config.py
  1. Заполните настройки в config.py:
# Основные настройки бота
TOKEN = "ВАШ_ТОКЕН_ОТ_BOTFATHER"  # Обязательно замените!
ADMINS = [ВАШ_TELEGRAM_ID]  # ID администратора
OBSIDIAN_PATH = "/полный/путь/к/вашему/obsidian/vault/"  # Путь к хранилищу

4. Запуск бота

python aiogram_run.py

🖥️ Использование

Основные команды

Команда Описание Пример
/start Запуск бота и главное меню /start
/list Показать дерево заметок /list

Работа через меню

  1. Создание заметки:

    • Введите название (или пропустите)
    • Добавьте содержание
    • Укажите теги через пробел

    Пример:

    Название: Идея для проекта
    Содержание: Разработать бота для Obsidian...
    Теги: идеи разработка
    
  2. Просмотр заметок:

    • Получите древовидную структуру хранилища

    • Формат вывода:

      vault_name
      ├── folder1
      │   └── note1.md
      └── note2.md
      

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

telegram-obsidian/
├── create_bot.py       # Экземпляры bot и dp
├── aiogram_run.py      # Основной файл для запуска бота
├── exceptions.py       # Кастомные исключения для работы бота
├── config.py.sample    # Пример файла config.py
├── handlers/           # Обработчики команд
│   ├── bot_commands.py # /start и /list
│   └── menu.py         # Интерактивное меню
├── keyboards/          # Клавиатуры
│   └── main_kb.py      # Главное меню
└── utils/              # Логика работы с Obsidian
    ├── list_notes.py   # Генерация дерева файлов
    └── notes_funcs.py  # Создание заметок

⚠️ Важные примечания

  1. Права доступа:

    • Бот требует полного доступа к указанной папке Obsidian
    • Убедитесь, что Python процесс имеет права на запись
  2. Безопасность:

    • Никогда не коммитьте config.py с токенами!
    • Добавьте config.py в .gitignore
  3. Ограничения:

    • Поддерживается только текстовый контент (Markdown)
    • Максимальный размер вывода дерева - 4096 символов (ограничение Telegram)

📜 Лицензия

Проект распространяется под лицензией Apache 2.0. Вы можете свободно использовать, модифицировать и распространять код с указанием авторства.


Сделано с ❤️ для сообщества Obsidian и Telegram разработчиков
ObsidianAiogramPython

About

Этот проект был сделан just for fun, я увидел видео об интеграции Obsidian с телеграмм и даже не смотря его решил сделать свою реализацию)

Topics

Resources

License

Stars

Watchers

Forks

Contributors