38

Как я решил сделать Telegram Bot для знакомств

Началось все года два назад, во Вконтакте я напоролся на один бот для знакомств (не буду говорить какой) и подумал, что почему бы не сделать такой же но в Телеграм, благо на тот момент мне хотелось попрактиковаться в написании ботов для телеги ну и на тот момент мне понравилась идея для бота в стиле "Знакомства"


В качестве языка программирования я выбрал Python, и сходу начал "творить"

в ходе разработки за пару месяцев я понял, что не все так просто как казалось:


1 - Bot pulling работал так себе, стабильности было маловато
2 - Библиотека telebot которую я использовал оказалась не так проста как кажется на первый взгляд
3 -  Я  был удивлен когда понял ,  что кода там будет больше чем в привычных мне скриптах на 200 строк, пришлось изучать много информации для разработчиков
4 - Инфраструктура,  поднятие бота локально на ПК это хорошо, но лучше было бы что бы появился какой-то сервер

Решением проблем было такое:


Переделал бот на web hooks, теперь не мой бот опрашивал Telegram на наличие изменений

а Telegram отправлял сообщения про изменения в мой бот, но для этого пришлось научить мой код принимать то что посылает мне Телеграм, в этом мне помог flask, та же пришлось купить доменное имя (купил подешевле на Go Daddy, там за копейки можно взять доменное имя на год, ну а потом цена будет выше, ибо скидки не на всегда) + Нужен SSL, по этому "перед" ботом появился nginx в роли reverse proxy, и Lets Encrypt сертификат, дешево и сердито. Это все я начал деплоить по всем канонам Continuous Delivery на купленный мной за 5$ самый дешевый сервер (дроплет) на DigitalOcean (кстати там можно на первые 3 мес получить этот дроплет бесплатно, но это не точно) ну а в качестве хранилища кода был выбран GitHub, после того как его выкупили Майки в нем можно бесплатно создавать закрытые репы)


Но это еще не все, ибо во время работы бота нужно хранить информацию, временную и постоянную, для этого пришлось подключить БД, в качестве бд в которой хранится временная информация, был выбран redis, ну а для хранения постоянных данных моя любимая mongodb , в целом их можно было развернуть прям на сервере, но я решил сделать все красиво и купил DigitalOcean Managed базу, то есть они сами ей "управляют" а я только конфигурирую ее кнопочками 😁 но штука не дешевая, 12$ в мес за одну базу.


Но так как я это все делал один, это заняло много времени, так же в Телеграм уже появились боты такого характера и это все привело к потери у моего бота уникальности + баги + пока делал появились библиотеки для работы с API Telegram поддерживающие асинхронность.


По этому хотелось бы дать совет тем кто тоже хочет разработать какой-то свой продукт😁

что бы не напарываться на такие косяки как я, перед разработкой нужно:


1 - Разработать документацию, да, это долго, возможно олдскульно, но это важно!

в ней обязательно должна быть схема работы, и все будущие функциональные возможности продукта (Да, опытные скажут что даже если и так , рано или поздно захочется добавить то чего изначально не было описано,  но это будет намного проще чем без нормальных доков, так как вы будете понимать что и зачем идет, почему этот Сlass наследуется от этого Class - а, это позволит модифицировать код не парясь о том что щас все навернется)


2 - Детально изучить актуальные технологии,  если вышла 3 версия python, не нужно кодить на 2 ой =)


3 - Желательно автоматизировать обновление версий продукта, так вы потратив может день, с экономите пару месяцев на ручном обновлении и возможных фиксах во время этого в будущем


(в этом поможет terraform для управления инфраструктурой, ansible как система управления конфигурацией, ну и попробуйте контейнерезацию в виде docker - это позволит более удобно управлять версиями)


Многие скажут, да зачем все это? этим же никто не будет пользоваться ?

а если будет?) представьте что у вас привалило 10 к пользователей, а у вас один сервер на 2 ядра в полку еле работает, а код обновляется посредством scp 😁


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


Собственно вот и бот:

https://t.me/Meets_For_Bot


Функциональных возможностей немного, но хоть что-то но есть:

1 - Лайки/Дизлайки, естественно если лайкнуть кого-то ему придет сообщение что вы его

лайкнули и он сможет посмотреть ваш профиль


2 - Мультиязычность, язык интерфейса бота подстраивается под язык Telegram клиента


3 - Можно отправлять друг другу анонимные сообщения внутри бота, их видите только вы и получатель


4 - Можно получить рандомный профиль ну или просто по очереди перебирать профили


Цель бота изначально была просто попрактиковаться в написании ботов, ну а теперь им даже пользуются люди😁

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества