Git в Телеграм??...
Решил запилить бота, который превращает Telegram в Git-репозиторий. Чтобы можно было через личку кидать файлы, коммитить, смотреть историю — и всё это в публичном канале с тредами.
Как это будет работать:
Кидаешь боту файл — создаётся проект (или добавляется в текущий)
Файлы улетают в канал @gitgram (каждый проект — отдельный тред)
Команды: /init, /commit, /log, /ls, /status
Версионность хранится в SQLite, можно откатиться назад
Что уже готов:Архитектура (сущности, связи)
Каркас бота на aiogram
База данных с таблицами под users, projects, files, commits, file_versions
Первая проблема:
Markdown в Telegram — это пиздец. Код постоянно содержит символы, которые нужно экранировать: точки, подчеркивания, обратные слеши. Если всё экранировать подряд — код превращается в кашу. Если не экранировать — Telegram шлёт нахуй. Пришлось писать свой костыль, который сначала экранирует одно, потом другое, и надеяться что ничего не сломается.python
def escape_markdown_v2(text: str) -> str:
"""Экранирует все спецсимволы MarkdownV2"""
special_chars = ['_', '*', '[', ']', '(', ')', '~', '`', '>', '#', '+', '-', '=', '|', '{', '}', '.', '!']
for char in special_chars:
text = text.replace(char, f'\\{char}')
return text
def format_code(filename: str, content: str) -> str:
"""Форматирует код для отправки в Telegram с подсветкой синтаксиса"""
lang = get_language_from_filename(filename)
ДАЛЬШЕ:
Допилить .gitignore (чтоб венв и кеш не летели в канал)
Коллаборация — чтобы несколько человек могли пилить один проект
Приватные проекты (пока всё публичное)
ЗАЧЕМ? А ГЛАВНОЕ НАХУЯ??
Если хочешь не просто читать, а смотреть как это варится и иногда подсказывать — залетай в чат: @sandbox_hardcore
Там всё как есть, без цензуры и без прикрас.
Остальное в моем КАНАЛЕ!)

Программирование на python
1K постов12K подписчик
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу