UPD: Ребята, спасибо за активность! Ссылки на бота и GitHub для удобства оставил в закрепленном комментарии и в самом конце поста.
Наверное, я не один такой, кого периодически бесит необходимость быстро накидать какую-нибудь схему. По работе или для себя — показать структуру проекта, нарисовать майнд-карту или просто объяснить другу на пальцах, как устроен самогонный аппарат.
Каждый раз это превращалось в ритуал: найди Visio, открой PowerPoint, разберись в онлайн-редакторе... В итоге тратишь полчаса на то, чтобы нарисовать три квадратика и две стрелочки.
В какой-то момент я психанул и подумал: «Какого черта я не могу делать это там, где и так сижу целыми днями — в телеге?»
Так и родился Diagrammer Bot — мой небольшой проект, который я пилил по вечерам. Изначально делал чисто для себя, но, кажется, получилось что-то, чем не стыдно поделиться с людьми.
Что эта штука умеет (постарался сделать максимально просто и мощно):
1. Понимает не только текст, но и картинки. Это была главная фича, которую я хотел. Можно просто кинуть ему фотку, и она станет блоком в схеме. Идеально, чтобы сделать, например, древо персонажей в сериале с их лицами.
2. Полный цикл работы: создал, соединил, ошибся, исправил.
Можно не только добавлять блоки, но и удалять их, редактировать текст, убирать неправильные стрелки. Всё через удобные кнопки.
3. Сохранение и загрузка проектов.
Можно работать над одной схемой, потом дать ей имя, сохранить и начать новую. А к старой вернуться в любой момент. Все диаграммы хранятся у вас локально, никакой регистрации и облаков.
4. Темы и экспорт.
Есть светлая и темная темы, которые переключаются на лету. А когда схема готова — одной кнопкой скачивается PNG-файл в высоком разрешении для презентаций или чего угодно.
Для тех, кому интересно, как это работает:
Под капотом крутится Python, асинхронщина на python-telegram-bot, а за отрисовку отвечает старый добрый Graphviz. Самой большой болью было научить его правильно находить картинки на диске и не создавать пустые файлы, когда в схеме нет стрелок. Но вроде победил :)
Весь код открыт и лежит на GitHub, так что если вы тоже кодер — милости прошу.
Во-первых, буду дико рад, если бот кому-то из вас пригодится и сэкономит время. Он полностью бесплатный.
Во-вторых, очень хочется услышать ваше мнение. Может, есть идеи, какую фичу добавить следующей? Или что-то работает криво? Любой фидбэк будет бесценен.
Спасибо, что дочитали! Не топите :)