← Все работы

Pinger

Напоминания в Telegram одной фразой, текстом или голосом

Состав проекта
Telegram-бот, распознавание времени и доставка напоминаний
Материалы
По запросуКод в закрытом репозитории

Задача

Ставить напоминания одной фразой, как человеку: «завтра в 15:30 позвонить в сервис». Без форм, календарей и выбора времени кнопками.

Решение

Написал бота на Go без фреймворков. ИИ расшифровывает голос и извлекает текст и точное время по строгой JSON-схеме. Команды, кнопки, хранение и доставка реализованы обычным кодом. Если времени нет, бот уточняет его, а продиктованный список возвращает аккуратным столбиком.

Сложности

Сохранять напоминание при повторной доставке сообщения Telegram и восстанавливать отправку после перезапуска сервера.

Результат

Бот собирается в один статический бинарник и работает как сервис systemd. Напоминание и Telegram update_id сохраняются в одной транзакции: повтор сообщения не создаёт вторую запись. Просроченные напоминания отправляются сразу после перезапуска.

Возможности

Текст или голос

Голосовое до пяти минут расшифровывается и разбирается так же, как текст.

Управление из уведомления

Отметка «Выполнено», перенос на 5–60 минут, удаление и правка из списка /list.

Надёжная доставка

Защита от повторного создания по update_id и новая попытка отправки через 30 секунд при ошибке. После сбоя между отправкой и её фиксацией уведомление может прийти повторно.

ИИ для разбора фразы

Модель расшифровывает голос и разбирает фразу по JSON-схеме; планировщик и доставка работают независимо от неё.

Устройство

  1. Telegram Bot APIlong polling, кнопки и голосовые
  2. Polzaраспознавание речи и разбор фразы по JSON-схеме
  3. Goкоманды, планировщик и доставка
  4. bboltтранзакционное хранилище в одном файле
  5. systemdотдельный пользователь и автоматический перезапуск

Стек

Презентация

Превью презентации Pinger
Презентация PingerОткрыть отдельно ↗
Все работыОбсудить задачу