Один Telegram-бот вместо тысячи пластиковых карт

Приветствую всех читателей! Это мой первый и, надеюсь, не последний пост о наших проектах на этой замечательной платформе. Так что прошу отнестись к этому с пониманием…)


Начну, пожалуй, издалека. Уже несколько лет мы с командой запускаем IT-проекты разного уровня сложности и в самых разных сферах. От простых Telegram-ботов, до масштабных блокчейн-проектов. И главным открытием за последние полгода для меня стало то, что лучше всего у нас получаются те продукты, которые запускаются, чтобы улучшить жизнь нам или автоматизировать процессы в других наших бизнесах и попутно с этим помочь людям/компаниям.


И сегодня я хочу рассказать как раз об одном из таких продуктов, который, несмотря на свою простоту, весьма неплохо облегчает жизнь своим пользователям и мне самому)

Речь пойдет про проект CardsWallet - бот в Telegram для хранения дисконтных карт магазинов.

Несмотря на то, что ковидную Москву и другие крупные города заполоняют разноцветные курьеры Яндекс еды, деливери и прочих самокатов, а каждый уважающий себя магазин старается наладить собственную доставку, фраза кассиров “А карта магазина у вас есть??” по-прежнему не теряет свою актуальность. Собственно тут вся собака и закопалась.

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


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


Примерно так появился наш @CardsWallet_bot


Мы стремились создать максимально простой и понятный продукт, в котором пользователям не придется тратить полдня, чтобы разобраться в функциях и загрузить свои карты. А Telegram в качестве платформы был выбран, потому что в нем я так или иначе провожу большую часть дня. Да и разработка ботов на питоне - это одна из сильных сторон нашей команды. Интерфейс получился достаточно простым и наш бот прошел “проверку бабушкой”, так что запутаться будет сложно)

Один Telegram-бот вместо тысячи пластиковых карт Бот, Telegram, Telegram бот, Магазин, Карты, Штрихкод, Длиннопост

Чтобы добавить карту, достаточно ввести название магазина и отправить боту фото карты со стороны штрихкода или QR-кода. После этого обрабатываем фотографию и делаем код четким и читаемым для “пикалки” на кассе.В нашем боте можно удобно хранить все свои скидочные карты для покупки гречки, а также ковидные сертификаты и прочие QR-коды. В общем всё, что нужно для выживания в наше суровое время ( ° ʖ °)После добавления новой карты она появится в разделе “💳Мои карты” в виде инлайн кнопки, которая отдает нужный код при клике.


Техническая часть и разработка


Бот был написан на языке python с использованием асинхронного фреймворка aiogram. Код бота опубликован на Github главного разработчика и доступен по ссылке: code

Работает вся система следующим образом:

Получение фото от юзера

Распознавание полученного файла

Генерация нового кода

Отправка сгенерированного кода юзеру

Сохранение file_id в базе данных


Распознавание происходит с помощью библиотеки pyzbar. После этого мы получаем тип кода и информацию внутри. Если это штрихкод, то генерируем новый с библиотекой python-barcode, а если это QR-код, то используем qrcode библиотеку. На выходе получаем фото с новым кодом, которое отправляем пользователю, и удаляем его временные файлы.

Также из особенностей стоит отменить способ хранения файлов. После отправки фото, Telegram отдает file_id, который мы сохраняем в БД. Таким образом, наш бот не хранит карты пользователей, а по запросу клиента файл отправляется с серверов Telegram, что значительно быстрее и безопаснее.


Заключение


Спасибо, что дочитали до конца, будем рады любой обратной связи, не токсичной критике и предложениям в комментариях! И отдельная благодарочка тем, кто не поленился протестировать нашего бота на своих картах) Ссылочка на бота для всех желающих.