Как я сделал бота, который пересылает почту в Telegram, и начал брать за него звезды

Меня зовут Матвей, я студент и Kotlin-разработчик. За несколько месяцев я в одиночку прошел путь от скрипта «для себя» до бота с пользователями, платными тарифами и реферальной программой. В этой статье — честно о том, как это было: что сработало, на чем я потерял время и почему беру оплату в Telegram Stars, а не переводом на карту.

Проблема, с которой все началось, знакома почти всем. Почту мы открываем редко, а Telegram — постоянно. В итоге письмо от преподавателя, работодателя или банка лежит непрочитанным полдня, а код подтверждения приходится искать, переключаясь между приложениями.

@FromMailBot решает это просто: вы подключаете ящик Mail.ru, Gmail, Яндекса или любой другой почты, и новые письма приходят в Telegram за секунды после отправки.

Как появился бот

Сначала это был пет-проект для себя: у меня iPhone и приложение Mail.ru, поэтому я пропустил несколько важных писем и решил, что проще написать пересылку, чем дисциплинированно проверять почту. Готовые решения либо просили основной пароль прямо в чате, либо проверяли почту раз в несколько минут. Мне хотелось, чтобы было и безопасно, и быстро.

Когда ботом начали пользоваться друзья, стало понятно, что задача не только моя. Сейчас бот умеет:

  • пересылать новые письма в Telegram за секунды: карточка с отправителем, темой и началом текста;
  • вытаскивать код подтверждения из письма и копировать его одним нажатием;
  • фильтровать письма по отправителям и словам, чтобы рассылки не отвлекали;
  • показывать письма целиком и искать по ним в мини-приложении прямо внутри Telegram;
  • пересылать почту в рабочую группу, чтобы общий ящик видела вся команда.

Все сделано одним человеком: сервер на Kotlin, мини-приложение на React, один недорогой VPS. Код открыт на GitHub.

Грабли, на которые я наступил

Gmail опаздывал на полминуты

С Mail.ru и Яндексом все работало почти мгновенно, а письма из Gmail иногда приходили с задержкой до 44 секунд. Для кода подтверждения это критично. Оказалось, Gmail сам не спешит сообщать о новых письмах. Спустя несколько попыток я сократил задержку до 8–10 секунд, причем так, чтобы бот не логинился в почту сотни раз в час и не рисковал блокировкой. Технические подробности я расписал в отдельной статье на Хабре.

Урок: прежде чем чинить, измерьте. Пока я не начал записывать, сколько времени письмо идет от отправителя до ящика и сколько от ящика до бота, я чинил не то.

Сообщения не должны теряться

Telegram иногда отвечает ошибкой или просит подождать, сервер иногда перезапускается. Чтобы письма не пропадали, у бота есть собственная очередь: уведомление сначала записывается в базу, и только потом отправляется, с повторами при неудаче. А чтобы не пропустить падение самого сервера, я подключил бесплатный мониторинг UptimeRobot: если бот перестанет отвечать, придет письмо.

Монетизация: почему Telegram Stars

Сервер стоит денег, и в какой-то момент нужно было решить, как брать оплату. Я рассматривал перевод на карту, как делают многие небольшие боты, но остановился на звездах. Причины:

  • Оплата в два нажатия. Пользователь не уходит из Telegram, не вводит данные карты и не присылает скриншот перевода.
  • Ничего не нужно проверять вручную. Бот сам получает подтверждение оплаты и сразу включает тариф. С переводами на карту я бы сидел и сверял поступления.
  • Автопродление из коробки. Telegram сам списывает звезды раз в 30 дней, а отменить подписку пользователь может в настройках Telegram.
  • Возвраты тоже есть. Если что-то пошло не так, я могу вернуть звезды одной командой.

Минус тоже есть: Telegram и магазины приложений забирают заметную часть, а вывести деньги можно не сразу. Но для проекта одного человека простота важнее комиссии.

Тарифы

Free - бесплатно

  • 1 ящик
  • пересылка писем

Pro - 100 ⭐ в месяц или 1000 ⭐ в год

  • до 5 ящиков
  • пересылка писем
  • фильтры, поиск по письмам, коды подтверждения

Business - 300 ⭐ в месяц или 3000 ⭐ в год

  • до 15 ящиков
  • все возможности Pro
  • пересылка в групповой чат

Бесплатный тариф не обрезан до бесполезности: один ящик пересылается так же быстро, как у платных. За деньги - удобство и масштаб. Новые пользователи получают пробный период Pro на 7 дней, чтобы попробовать все функции, а незадолго до конца бот напоминает об этом.

Для себя я добавил админские команды: выдать подписку другу на месяц или год, создать одноразовую ссылку-подарок, отозвать подписку или сделать возврат. Это оказалось полезнее, чем я думал: первых тестировщиков проще всего отблагодарить бесплатным Business.

Рост: канал и реферальная программа

Рекламного бюджета у меня нет, поэтому первые пользователи пришли из двух источников: знакомые и канал бота в Telegram. В канале я пишу об обновлениях и отвечаю на вопросы в комментариях, и недавно там собрались первые 100 подписчиков.

Чтобы пользователи сами приводили друзей, я сделал реферальную программу с простым правилом: пригласи 5 друзей - получи Pro на месяц. Друг засчитывается, не когда нажал «Старт», а когда подключил свой ящик: так накрутить приглашения фейковыми аккаунтами намного сложнее. Кнопка «Поделиться» отправляет готовое сообщение с описанием бота и личной ссылкой.

Мелочь, которую я чинил дважды: сначала в тексте вместо пробелов стояли плюсы, потом оказалось, что Telegram показывает ссылку до текста, и фраза «Попробуй:» в конце указывала в пустоту. Всегда отправляйте себе то, чем будут делиться пользователи.

Почему боту можно доверить почту

Самый частый вопрос: «А не украдешь ли ты мою почту?» Вопрос справедливый, и ответ на него - часть продукта:

  • Никаких основных паролей. Бот работает только с паролями приложений, которые дают доступ только к письмам и отзываются в настройках почты за секунду.
  • Пароли зашифрованы. Даже если кто-то украдет базу, без ключа она бесполезна.
  • Письма не хранятся. Бот читает письмо, отправляет карточку и не собирает архив чужой переписки.
  • Удаление одной командой. Пользователь в любой момент стирает все свои данные.
  • Открытый код. Каждый может проверить, что бот делает с данными, или поднять собственную копию.

По моим ощущениям, открытый код снимает больше сомнений, чем любые обещания в описании.

Цифры и что дальше

  • пользователей: 10
  • подключенных ящиков: 14
  • переслано писем: 147
  • подписчиков канала: 100+
  • расходы: один VPS за 400 ₽ в месяц

В планах: собрать обратную связь от первых платящих пользователей, довести до ума пересылку в рабочие группы и понять, откуда люди приходят лучше всего.

Если вы тоже пропускаете важные письма, попробуйте: @FromMailBot. Первая неделя Pro - бесплатно. Буду рад вопросам и критике в комментариях: чего вам не хватает в таком боте?

11