Завёл себе голосовой журнал в Telegram
Две бессонные ночи — и мой телеграм-бот принимает голосовые заметки, складывает файлы в хранилище и расшифровывает их в текст. Зачем мне это — записал в него же.

Автор: Georg Malahov
Декабрь, час ночи, вторая бессонная ночь подряд, но я доделал: бот работает. Идея простая — вести дневник голосом. Не садиться вечером за клавиатуру, а наговаривать заметки в Telegram в течение дня, как голосовые сообщения другу. Только на той стороне не друг, а мой собственный бот, который всё принимает, складывает и расшифровывает.
Замысел дальше самих записей. Если я какое-то время подряд буду наговаривать, что происходит, накопится материал, по которому можно анализировать прожитые дни — и собрать всё это в один интерфейс. Записи — только первая часть. Вторая, самая интересная, начнётся, когда их станет много.
Внутри всё пока прямолинейно. Отправляю боту сообщение — он скачивает файл, кладёт его в S3, объектное облачное хранилище для файлов, а саму заметку заводит в Strapi. Strapi — это open-source система управления контентом: у неё из коробки есть база, админка и API, так что мне не пришлось писать свой бэкенд для заметок с нуля. Бот принимает все типы сообщений: голосовые, видео — из них вытаскивается аудиодорожка, — картинки, обычный текст. Повторную отправку того же файла он распознаёт и не обрабатывает заново, а если отредактировать сообщение в Telegram, обновляется существующая заметка, без дубликата. Нашёлся и первый краевой случай: при редактировании голосового или видеосообщения Telegram присылает не новый файл, а подпись к нему — её я сохраняю отдельным атрибутом к той же заметке.
Неделей раньше, первая проверка прототипа: голосовое ушло — расшифровка вернулась
Про доступ тоже пришлось подумать: бот в Telegram по умолчанию открыт любому, кто его найдёт. Поэтому новый пользователь при первом сообщении создаётся автоматически, но в заблокированном состоянии — пока я вручную его не разблокирую, бот с ним не разговаривает.
За ночь накопились и мысли на потом. Файлы после загрузки в S3 остаются лежать во временной папке контейнера — надо их удалять сразу, иначе бот, работающий без обновлений, будет тихо копить мусор. И хочется посмотреть API Deepgram — это сервис распознавания речи: интересно, умеет ли он вытаскивать из записи не только слова, но и сами звуки — смех, шум машины. Такие пометки к заметкам были бы отличным дополнением.
Заметку о том, что бот готов, я наговорил в него самого — и пока она обрабатывалась, пошёл спать. Теперь план такой: неделю ничего в нём не трогать, просто записывать каждый день и накопить настоящих заметок. А потом браться за вторую часть — анализ дней и единый интерфейс поверх всего, что накопится.