Проект: Tyzenhaus, Telegram-бот, упрощающий взаимные долги в чатах.  Публичный пост
14 сентября 2021  650
Tyzenhaus, Telegram-бот, упрощающий взаимные долги в чатах.

Расскажите о сути проекта?

Tyzenhaus — это Telegram-бот, упрощающий взаимные долги в групповых чатах.

Как Splitwise, только в Telegram.

Как появилась идея? Что вдохновило?

До вспышки уханьского коронавируса мы с друзьями, бывало, путешествовали по Европе. Знаете, типичные евротрипы, когда забукано 4 перелёта, 10 поездов и автобусов, 7 ночлегов в 3-х странах. С этими платежами проблем почти нет: обычно всё дублируется на электропочту, поднять историю и выяснить кто кому сколько должен не сложно.

Проблемы начинаются уже в трипе. Купили перекусить в аэропорту — кто-то оплатил чей-то кофе. В сувенирной лавке отказались принимать карту — и вот уже я покупаю магнит кому-то за налик. В магазине купили продуктов — платил кто-то один. Взяли пиццу на всех — платил другой. Доехали до следующей страны — а там вообще не евро.

Бесконечный поток "потом сочтёмся".

Первый раз не сочлись. Разобрались с основными платежами, а на остальное забили. Во второй раз каждый был сам за себя, и это тоже не сработало. В третий раз мы сохраняли чеки, иногда подбивали промежуточные долги. В четвёртый — вопользовались какой-то прилагой, может даже Splitwise. Помню, она была далеко не идеальная и хотела подписку за снятие ограничений и сокрытие рекламы. На пятый раз я бы купил ту подписку, но проблема ушла в прошлое вместе с евротрипами и большими компаниями.

А сейчас снова вернулась. И я решил написать бота для решения этой проблемы. Всё равно ведь все сидим в Telegram!

Что вошло в прототип и сколько времени на него было потрачено?

Первую версию можно описать этим полуминутным видео:

Ключевые моменты:

  • Это Telegram-бот;
  • Его надо добавить в чатик;
  • Почитать справочку;
  • Нужно регистрировать в боте общие траты;
  • В любой момент времени можно узнать кто кому сколько чего должен;

Какой технологический стек вы использовали? Почему?

Бэкенд: Kotlin
Деплоймент: пока на Heroku
БД: PostgreSQL
Фронтенд: Telegram

Kotlin я выбрал потому, что люблю этот язык и мне доставляет удовольствие писать на нём. К тому же, он на 30% выразительнее Java.

Heroku потому, что пока что это выходит абсолютно бесплатно. Но я не прибит к нему гвоздями — подойдёт любой VPS или даже serverless.

PostgreSQL как раз из-за Heroku: до 10К строк там бесплатно. Мне, например, понравилась возможность хранить JSON в колонках. Получается эдакая документная БД: primary key и, собственно, данные в виде JSON-объекта. И за схему париться не нужно. С моими масштабами — самое то. Да и если вдруг понадобиться масштабироваться — найти предложения по PostgreSQL или даже развернуть базу самому будет несложно.

Формат Telegram-бота (а не мобильный апплик или вёб-SPA) потому, что таков путь. Решение, конечно, такое себе, ведь сделать хороший UX в Telegram-боте дьявольски сложно. Но и ещё одна прилага для взаимных долгов нафиг не нужна, а вот ботов подобных я не встречал.

Как вы запускались и искали первых пользователей?

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

Здесь тоже ищу людей, которым пригодится этот бот, ну и фидбек послушать было бы здорово.

С какими самыми неожиданными трудностями пришлось столкнуться?

Самая большая трудность, с которой приходилось сталкиваться постоянно — это, собственно, Telegram как платформа для ботов. А именно:

  1. Очень сложно организовать хороший UX для пользователей;
  2. Ограничения в API;

ИМХО, боты хорошо подходят для оповещений, т.е. когда информация, по сути, не интерактивна и направлена в одну сторону: к пользователю. Неплохо делать ботов без состояния, которые обрабатывают одиночные запросы. Будь то классические текстовые боты, или инлайн-боты. Последние, кстати, вообще супер: попробуйте как-нибудь pic, vid, QuizBot, или GachimuchiKBot.

Но боты с состояниями и активным вводом инфы — это ужасно и никогда не сравнятся с мобильными аппликами по удобству. Ну, если только Павел Дуров не придумает какой-нибудь встроенный язык разметки интерфейсов для использования в Telegram. Тогда-то все остальные приложения с телефона можно будет и удалить :)

В API, например, не хватает таких базовых вещей как "получить список всех пользователей этого чата". Из-за этого я чуть не бросил делать бота вообще, но потом придумал самостоятельную "регистрацию" пользователей через выполнение команды. Но даже после этого, имея идентификаторы пользователей чата, нельзя получить их юзернеймы одним запросом.

Сколько потратили и заработали? Есть идеи как это можно монетизировать?

Потратил пока что ноль денег и несколько сотен часов на неспешную разработку, тестирование и рисование промо-ролика.

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

Можно, наверное, было бы ввести ограничения для бесплатных чатов, но чем я тогда лучше прилажек с подписками? У них хотя бы хороший дизайн…

Нужна помощь Клуба!

Я был бы рад найти клубней, которым был бы полезен мой бот. А затем послушать их фидбек и пофиксить найденными баги :) Не стесняйтесь накидывать issues на GitHub (звёздочки тоже ставьте!), в комментарии к этому посту, или в личку.

Какие планы на будущее?

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

  • Добавить возможность быстрого сброса всех долгов в ноль
  • Добавить возможность вывода всех транзакций (платежей) и поиска по ним
  • Добавить возможность прикрепления чеков к транзакциям
  • Переехать на нормальный VPS, а то нещадно тормозит
  • Прикрутить статистику и мониторинг
  • Сделать лендинг с подробностями (и документацией?)
  • Добавить возможность посылать багрепорты и суппорт-реквесты прямо через бота
  • ???
  • PROFIT (AKA "продаться с потрохами Azino777")
10 комментариев 👇

Будут ли доступны коллекторы в премиум-подписке за 14.88?

  Развернуть 1 комментарий

@begor, лайк за идею!

  Развернуть 1 комментарий

Респект! Давно вынашиваю идею сделать подобную штуку, но так и не добрался до реализации.

  Развернуть 1 комментарий

Ха, у меня тоже есть подобный бот: @split_bill_bot и потребность такая же была, делить траты в путешествиях.

  Развернуть 1 комментарий

@SergeyK, или @bill_the_splitter_bot?

  Развернуть 1 комментарий

@madhead, не, сверху верное написание

  Развернуть 1 комментарий

@SergeyK, у меня что-то не заработал. А вот второго сейчас посмотрел - почти как мой.

Эх, ну вот как искать годных работающих ботов в телеге?

  Развернуть 1 комментарий

@madhead, странно, проверил, все работает.
В этом проблема, нет нормального каталога с описанием и не ясно как бота людям предлагать.

  Развернуть 1 комментарий

@SergeyK, в чате не реплайнул ни на одно сообщение:

В личке ожидаемо ошибки:

  Развернуть 1 комментарий

@madhead,
/start – для активации

чтобы добавить запись
/add #me 4715 : #me @userID #Москва_25_05
до : кто платил, после - на кого распределить
если не указана сумма - то делится поровну.
те кто платил обязаны указать сумму.

/list - список твоих записей
/solve - выведет текущий баланс

Как-то так

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб