Версия 0.1. Бот для авторизации в чат жильцов
В 2020 году мы группой людей запустили закрытый чат жильцов, и для упрощения регистрации я написал простенький телеграм бот. Он просит документы / пропуск или просто селфи с видом из окна, отправлял администратору чата и тот нажимал одну из кнопок «принять/отклонить». Администратор принимал, бот отправлял одноразовую ссылку в чат.
Такая модная схема быстро зашла, ссылку на бот раскрутили в открытых чатах, повесили в подъезды. Чат начал расти по 20-30 человек в день.
На самом деле я вот говорю «простенький», а те кто в 2020 году пытался иметь дело со ссылками в чат помнит, что одноразовых ссылок не было, и бот мой их сам сбрасывал, когда видел, что человек зашёл, а когда заходил «чужак» бот его кикал, сбрасывал ссылку и ругался. То есть по сути я написал сервис генерации одноразовых кодов доступа. Это потом телеграм дал одноразовые ссылки и логика в боте упростилась :)
Потом соседний дом...
А, ну да, знакомьтесь, ЖК "Лайнер": стоит в Москве на Ходынском поле, с двух сторон от самого большого ТЦ в Европе "Авиапарк", два больших дома - "Запад" и "Восток" по 2500 апартаментов.
Так вот соседний дом увидев как без мучений с ручным добавлением работает наш чат, тоже добавился в бот. Надо ли говорить, что код был на это не рассчитан, как все программы в 90-х не рассчитывали на многопоточность. Теперь я умнее, да.
Версия 1.0 Первые интеграции с УК
Я ж не просто так чаты жильцов администрировать начал, в домах есть такой термин «Инициативная группа», это люди, которым не все равно и бесплатно вкалывают чтобы жизнь в доме не скатывалось в говно (и все равно получают звездюлей от других жильцов за все косяки в доме). Так вот я там.
Пришла идея как ещё можно покодить на благо дома.
Бот стал принимать заявки на пропуск автомобилей и передавать в охрану. Никаких API, только хардкор: каждый охранник был подружен с телеграмом, записан в бот как "охранник" и к нему стали приходить вот такие заявки:
Тут я решил несколько болей: раньше охрана принимала только в WhatsApp, ибо там виден номер телефона, теперь бот сам запрашивает телефон, адрес и передаёт в охрану в нужном виде. А вторая - людям теперь не нужно писать “добрый день, пропустите пожалуйста такую машину, вот адрес”. Сделал даже киллерфичу: при отправке фотографии в бот он сразу спрашивал “кидать в охрану?” - так люди скриншотили такси и получали пропуск одним кликом.
Надо ли говорить, что основная сложность была не в программировании :)
А, да, наверное надо - так вот бюрократия, убеждение, обучение, подпинывание - все это ложится на хрупкие плечи кодера.
А еще я добавил автоответ бота на ключевые слова в чате, мне нравится:
Дальше добавился колл-центр.
Раньше он принимал заявки только в виде телефонных звонков и в никем не используемом приложением, за который УК отвалили кучу бабла. Механика прежняя - авторизация, прием заявки - отправка в аккаунт диспетчера.
Здесь киллер-фичей стала возможность передачи фото и видео, чего до сих пор не сделали в приложении. Так люди жалуются на мусор, лампочку или просят помощь.
Экосистема чатов
Не знаю как у вас, а вот у нас в доме на 2500 тысячи квартир чаты жильцов еще делятся на чаты по подъездам, чаты по интересам, флудилки и прочие. В основной чат можно попасть по авторизации, а в чаты “поменьше” пускали все еще вручную.
Я придумал пост-авторизацию: чтобы попасть в чат подъезда Б Лайнер-Запад, нужно сперва авторизоваться в чат Жильцов Запад. А затем уже вторая авторизация (или ее отсутствие для флудилки, например). В боте появился список чатов, и добавился инструмент, с которым каждый может добавить чат в список.
Обновление 2.0
Начинал писать 1.0 я на стеке pyTelegramBotApi (синхронный), psycopg2, все деплоится на Heroku.
2.0 была переписана целиком на асихнронный aiogram, asyncpg, добавлена Redis для FSM. Был заиспользован божественный фреймворк aiogram-dialog, который упрощает работу с inline keyboards, всем рекомендую.
Собственно, в этом была основная цель изменений, несмотря на то, что синхронная версия работала как часы, но клавиши под строкой ввода люди не особо знакомые с ботами постоянно теряли, скрывали, а inline клавиши + pytelegrambotapi это боль.
К тому времени в боте было 2000 пользователей.
Я добавил еще одну классную штуку - возможность поделиться ссылкой на чат через inline команду. Это бустнуло авторизации в чаты в космос.
Открываем двери в подъезд и шлагбаумы из бота
Однажды в УК постучались ребята, предоставляющие считыватели с реле превращающие любые двери на стандартных mifair карточках в открывающиеся с телефона.
И так получилось, что я как тыжпрограммист с ними заобщался и договорился об интеграции. Тут мне потребовалась еще одна интеграция - нельзя же просто так пускать кого попало, кто сказал "честное слово, я у вас живу". С создателями приложения УК договорился о простой API - я передаю номер апартамента и номер лицевого счета, а API выдает совпало/не совпало. Таким образом я подтверждаю жильца при этом не сохраняя личные данные и не имея доступ в базу. Ненавижу думать о персональных данных.
Почта
С подтверждением стали возможны другие внедрения, первой появилась почта. У меня уже давно сделан бот, у которого даже есть пользователи для тайной санты (кстати он все еще на древних библиотеках), вот я взял его механику и внедрил возможность отправлять письма по адресу:
Барахольщик
Чат барахолка есть во всех домах и потихоньку я начал его систематизировать, первым добавился аукцион.
Надо придумать как еще парсить объявления, но совершенно не хватает времени.
Расходы и монетизация
Я долго не мог придумать как же мне начать не только тратить на бота.
На тот момент Heroku ел:
- 7$ Heroku hobby
- 9$ postgresql hobby basic
Вскоре добавилось еще 10$ за Redis, внезапно я вышел за 30 мегабайт.
Донаты
Первым стало решение после подпинывания жены: я просто сделал небольшое сообщение в рассылку со ссылкой на чаевые. Я не рассчитывал вообще ни на что, но результат очень удивил. Буквально за 3 часа мне накидали 20'000 рублей и самый большой донат был 3000. Это же как я помог оказывается кому-то!
Затем я добавил Patreon и набрал чуть больше 20$ подписок. Это мне покрыло ежемесячные расходы.
Донаты присылают только при анонсах новых фичей бота, в остальное время люди не замечают кнопки в боте "поддержать" в итоге я их вообще убрал.
Расширение
Решение выйти на рынок ботов для управляющих компаний тоже было в рассмотрении. Я посмотрел боты, предлагавшие свой сервис за 15000 рублей сразу + 1 рубль в месяц за квартиру - и честно, выглядят они все как говно. Но управляющим компаниям дизайн бота не продать.
А вот что им нужно - так это кросс-мессенджер сервис - и вотсап и вайбер и фейсбук, а мне неохота в это вникать.
Но, видимо когда ты делаешь свое дело хорошо из этого может что-то получиться и в итоге соседка создала свою УК и взяла мои услуги. Договорились на особых условиях и пока мои доходы ровно 0 и вряд ли превысят его в ближайшее время.
Сервисы
Я долгое время не соглашался на любые предложения о рекламе внутри бота, так как не хотел, чтобы бот был чем-то навязчивым и ассоциировался с какой-то наживой. Но вот кажется нашел идеальную для себя схему. Бот не просто предлагает посмотреть чей-то ресурс, он полноценно встроил сервис заявок/заказов стороннего сервиса.
Также добавил бесплатно услуги соседей, выглядит так классно, что даже не знаю, нужно ли монетизировать:
Пока все доходы от сервисов я потратил на донаты другим хорошим людям :)
Какой совет вы бы сами могли дать идущим по вашим стопам?
Честно, неблагодарное это дело делать что-то на благо дома :)
То меня обвиняли (обвиняют) в коммерческой связи с УК, то в коварных планах наживе на жильцах (еще до любых донатов), то поучительно рассказывают что "инициатива наказуема, поэтому отвечай давай за все" :)
Но осозновать, что кому-то твое "изобретение" нравится чертовски приятно и пока я как-то балансирую :)
Обязательные спасибки
Мне пока не давали в руки микрофон с моим ботом, но все же есть кого поблагодарить:
@madhead - именно с его поста я понял, что можно не сильно парясь захостить на Heroku телеграм бота и много мучал вопросами, он знает как на самом деле я умею кодить, хехе :)
Tishka17 - и его либе aiogram-dialog, благодаря которой бот реально приятный.
Просто моему соседу Никите, который вдруг да прочитает этот пост, с которым мы вместе, простите, "хаваем все это", и стараемся улучшать жизнь нашего дома :)
Чел, спасибо тебе за бота и за пост. Это очень круто.
Твой сосед из «Лайнера» Никита (другой)
Чувак, это очень круто и приятно. Спасибо что написал статью.
Развивай бота и монетизируй. Желаю тебе удачи!
Вау, очень крутой проект! И не важно как там накодено, главное что решает реальные задачи жильцов.
С большим удовольствием прочитал, особенно про ту часть, где описана реклама услуг жильцов самого ЖК. По-моему, это очень крутой задел на то, чтобы сделать настоящее дружное комьюнити и повысить качество жизни для тех, кто в этом заинтересован. Ну в лучших традициях современной урбанистики, где рабочие места создаются внутри сообщества, а значит меньше человек вынуждены ездить через полгорода на работу, а значит все вокруг чуточку более счастливы, и так далее :)
Отличная работа и желаю побольше моральных сил на поддержание проекта :)
Выглядит супер круто! Расскажи, а как вообще договаривался с УК, было ли при этом MVP? Было бы интересно прочитать
Ты очень очень очень крутой чел! Прям немножко даже завидую успеху.
Дело в том, что в 2010-2011 годах я пилил стартап, который предоставлял платформу для коммуникации между соседями.
Ну собственно похожих платформ сейчас уже уйма — для каждого ТСЖ по три штуки, включая нативные мобильные приложения. Только большинство из них фокусируются на коммуникации между ТСЖ и жильцами, а денег хотят зарабатывать на жильцах.
Мы же тогда делали фокус на оказании соседских услуг (полив цветов, присмотр за котом, выгул собаки, стрижка и репетиторство на дому), перенаправлении спама из физической почты в электронную (супер таретированная реклама условной Пятерочки у дома только тем жильцам, кто зарегал свою скидочную карту и тем самым выразил интерес к Пятерочке) и "умной многоэтажке".
Хорошо помню как мы решали ту же задачу авторизации в приложении. В итоге остановились на проверке через почтовый ящик: председатель ТСЖ мог распечатать в личном кабинете коды приглашения для каждой квартиры на листах А4 и раскидать их по почтовым ящикам жильцов.
Но увы — мы подписали 5 домов в Таллинне и благополучно пофейлили. Думаю, потому, что с одной стороны наш сервис несколько опередил время: мы предполагали вести коммуникацию через сайт (форум), емейл и очень дорогие SMS, которые мы так и не внедрили поэтому. Интегрироваться с ICQ и Skype было невозможно. Чаты в уже готовых мобильных приложениях решают коммуникационные задачи в 100500 раз круче. Нам даже создание собственного мобильного приложения непомогло.
С другой стороны, дремучесть людей на всех уровнях зашкаливала тогда: в большинство ТСЖ инициативные группы были оккупированы бабками, не имеющими ни компа, ни смартфона. В ТСЖ тоже сидели все хоть и за компами, но даже идея отправки счёта за коммунальные услуги по емейлу казалась им дикостью вычурной и излишней блажью.
Так что очень понимаю большинство твоих головняков. Мега-респектище за такое классное достижение!
тот момент, когда у самого была идея бота для домовых чатов😅
даже имя в телеге забронировал (правда "ntighborship", так как "neighborhood" было уже занято), но дальше этого дело не дошло))
а тут смотрю, сколько всего прикрутили... ух, круто!
Просто топ! Сам со своими ботами прошел через похожие этапы, поэтому понимаю вдвойне.
Зацени мою либу для сбора метрик для аиограма, может будет полезно: https://github.com/benyaming/aiogram-metrics (писец, до сих пор ридми не сделал, сегодня исправлюсь)
Согласен с @kirk, твой зоопарк на хероке это прям тяжко, готов помочь тебе переехать на vps и настроить все в докере + github actions, там вообще ноль ебли, когда это уже настроено (у меня такой же стек, поэтому на все грабли я уже наступил)
Слышала о твоем боте, и это тот случай, когда я живя в паре домов от Лайнера, жалею, что живу не в нем :)))
Ты большой молодец ))
😱 Комментарий удален его автором...
Товарища моего все никак в чат жильцов не добавляете и в чат барахолка, хз почему.
Бро, это очень круто.
Ровно сейчас думаю про бота, чтобы автоматизировать уже сложившееся сообщество ЖК на 9 домов с кучей разных чатов, барахолкой, новостным каналом и вот этим всем остальным.
А у тебя уже так круто всё сделано.
Мы "монетизировали" всё это через то, что в Барахолке появились коммерческие объявления, но income там исключительно смешной - буквально на годовую оплату лицензии Combot-а, который сейчас делает welcome людям в общем чатике ЖК.
О! вот я офигел, когда у Вастрика прочитал про свой дом.
Бот крутой, я даже донатил когда-то)
Пользуюсь в основном только заказом пропуска на машину, но мое уважение, продукт крутой получился.
Кстати, вопрос по проходу в подъезды: я так понимаю, что эта штука в итоге не полетела? у нас на подъезде содрали вроде ридер для чтения QR кодов от бота
Крутой проект! Как раз неделю назад размышлял над подобным функционалом для чатов ЖК, где приобретаю квартиру. Не размышлял над «унификацией», чтобы расширить функционал бота на разные ЖК? Или это сопоставимо с созданием нового бота для нового объекта?
Илья, а как можно твой бот интегрировать ещё в один крупный ЖК? [хотели провести к нам вашу же УК, но те отказались 😒]
Вау! Очень круто! Прочитала с удовольствием!
Скок стоит? Продай незадорого, а? )
Спасибо за пост, аж загорелся написать что-то аналогичное. Бот выглядит очень круто и кажется развивать можно бесконечно. Как жаль, что мой дом сидит на вотсаппе, перетащить бы всех в телегу
Крутую работу проделал! В Москве с переездом в каждый новый дом, с ума сходил от этих чатиков и от их НЕ удобства
Моя любимая фича — заказ пропуска для машины. Очень удобно. Спасибо!
Интересно, сколько в этом посте отметится жителей Лайнеров? :)
Это просто О-Ба-Лден-Но!
Очень понравился пост.
Любопытно, а вдруг где-то не пользуются Телегой, есть ли потенциал у такого сервиса в другой обертке?
Или все эти приложения-швейцарские ножи в одном "жалобы-охрана-протечки-открывалки шлагбаумов" заранее обречены на провал? Ведь сейчас правда всё это делается на базе мессенджеров и чатов, а скачивать отдельное приложение никто для этого не будет
Крутяк, а случаем не опенсорсил проект? интересно поглядеть на код и попробовать чет подобное у себя в сделать в ЖК, а то пропуск тачек и людей по звонку телефона охране и консьержу, а вот для открытия шлагбаума есть приложуха
Пользовался ботом когда жил в Лайнере, спасибо :)