11 Октября 2021
37

Как я решил сделать 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 - Можно получить рандомный профиль ну или просто по очереди перебирать профили


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

Показать полностью 2
3902

Ответ на пост «Пулемет без отдачи»1

Пулемёт ПКМ 7,62-мм. Не холостые. Контролировать отдачу у современных пулемётах почти не нужно, даже на крупном калибре, не говоря про мелкашку. Для остального есть сошки и упор.

360

Разрушение храма – две версии одного события

В конце 2002 года в одной из православных газет была напечатана статья о том, как в 1961 году, во времена хрущевских гонений на Церковь, был разрушен Петропавловский храм в городке, где я родился и вырос. В статье приводились рассказы очевидцев и участников тех событий. Прочитавши сию статью, впал я в некоторое недоумение. Я помнил это событие (мне было тогда 14 лет), поскольку, во-первых, оно было неординарным, во-вторых, в нем участвовал мой отец, и его тогдашний рассказ о закрытии храма отличался от того, что я прочитал в статье. Отец ушел вечером на партсобрание в локомотивное депо и вернулся домой только утром, к завтраку. Мать, конечно, ночь не спала, тревожилась, посему отец в некоторых подробностях рассказал за завтраком, что он участвовал в закрытии Петропавловской церкви, и как это происходило.


Вначале приведу некоторые фрагменты из газетной статьи.

Кончилась служба. Священник Никита выходит, объявляет:

— Вот, церковь у нас взяли. Мы отдали это здание сами, добровольно, потому что надо подчиняться власти. У нас ведь еще на кладбище есть церковь. Вот давайте все иконы снимать сами, и какой-нибудь сарай найдем, туда сложим…

Как он стал это говорить, такой крик поднялся:

— Не отдадим церковь! Не отдадим мы церковь!...

… И вот семнадцать суток мы стояли в церкви, не выходили из храма. Менялись: одни уйдут, другие придут. На коленях стояли и пели. Приходил к нам Среднев, председатель райисполкома, и еще кто-то с ним из начальства. …

… Среднев говорит: "Ну, ничего плохого нет, пойте. Только ночью не закрывайтесь. От кого вам закрываться…" Улестил нас — а мы поверили. …

… Если бы мы в ту ночь двери заперли, — как пошли они на штурм, мы бы в колокол ударили — и весь город подняли бы на защиту. А двери-то какие крепкие были, их ведь ничем бы не взяли. Засовы железные были куда какие прочные!

И вот среди ночи в открытые двери врываются пьяные заводчане. Нас стали по одному отдирать от икон да бросать прямо оземь. А приступки-то высокие. Сколько покалечились, в больницу-то попали. А Мария Гавриловна с ребятишками — все вцепились кто во что, их отдирают — крик, плач…


Когда по приезду в родительский дом, я отцу пересказал содержание статьи, он аж закипел: «Какие очевидцы и свидетели!? Там были древние старухи, которым сейчас уже должно быть за сто лет! И не так это было!» Какой-то резон в его словах был. Стояли-то, в основном, пенсионерки, а прошло с тех пор 40 лет. И много ли они знали? А отец в те времена был внештатным инструктором горкома партии, и знал некоторые тайные пружины, приводившие в движение данные события. И рассказал мне отец свою версию тех событий, которую я сейчас приведу.

В городе было две церкви: Петропавловская, в районе базарной площади, и Всехсвятская церковь, находящаяся около кладбища на окраине города. Петропавловская жила богато – приезжавшие в город на базар что-нибудь продать или купить колхозники и горожане шли, главным образом, именно в нее. А Всехсвятская церковь жила бедно – мало прихожан, мало треб, в основном отпевание. На этом власти и сыграли. В среде клира Всехсвятской церкви нашли недовольных сложившейся финансовой ситуацией и согласившихся поддержать решение власти о закрытии Петропавловской церкви. Понятно, что при этом Всехсвятская церковь оказывалась в существенном финансовом выигрыше. А потом власти нажали на клир Петропавловской церкви, настоятель о. Никита не выдержал и подписал согласие на закрытие церкви.

Поскольку в Петропавловской церкви после оглашения решения о закрытии началось «стояние» несогласных, то и была разработана операция по разрушению церкви. Операцию надо было провести скрытно (ночью) и быстро. Вечером отец ушел в депо на партсобрание, на котором присутствующим объявили, что сегодня ночью церковь будет закрыта, и сформировали группу участников акции. Строго-настрого запретили сообщать об этом домой или кому еще. Прямо с партсобрания группа ушла в город на улицу Ленина. Там в здании одного из техникумов был сбор всех участников акции (от нескольких предприятий, где прошли аналогичные партсобрания). Был рассказан план акции и дан строгий инструктаж по ее проведению. В частности, указывалось, что физическую силу к защитникам церкви применять нельзя ни в коем случае. Иначе потом старухи по всему Бузулуку ходить будут, показывать реальные и мнимые синяки и ссадины и рассказывать, как их избивали безбожники (так что рассказы «очевидцев» о том, как «…врываются пьяные заводчане. Нас стали по одному отдирать от икон да бросать прямо оземь. А приступки-то высокие. Сколько покалечились, в больницу-то попали» батю моего особо разгневали).

Так как защитники церкви привязали к языкам колоколов длинные веревки, чтобы ударить в набат при необходимости, то отобрали несколько самых высоких «разрушителей», дали им ножи и поставили в авангарде всей команды. Они должны были обрезать веревки на максимальной высоте, чтобы набат не прозвучал. Со своей задачей они справились. Хотя «очевидцы» говорили о внезапности прихода разрушителей церкви, отец сказал, что снаружи у защитников ходили дозорные мужики. На базарной площади в это время делался ремонт покрытия, были кучи булыжников и щебенки. Когда отряд разрушителей подошел к храму, дозорные стали кидать в него камнями (отец сказал, что попали в руку одного из деповских, назвал его фамилию, но я не запомнил). Дозорных быстро рассеяли. По поводу того, были ли открыты двери в храм, отец ничего не говорил, а я не догадался спросить. Но есть один момент – когда разрушители заходили в храм, то обратили внимание на достаточно сильный туалетный запах, Удобства-то были во дворе, и когда защитники запирались, то где-то в притворе ставили ведра для справления нужды. Думаю, что если бы двери действительно не запирались, то нужды в ведрах не было бы.

Итак, разрушители стали входить в храм и рассредоточиваться вдоль стен по периметру храма. Потом взялись за руки, образовав цепь, и стали эту цепь сжимать, медленно подвигая защитников к выходу. Так что если кто и пострадал в схватке, то это были разрушители, а не сопротивляющиеся защитники (но каковы были потери разрушителей, не знаю, поскольку потом по Бузулуку они не ходили, показывая свои раны). Вытеснив протестующих, стали быстро снимать иконы, разбирать иконостас, выносить мебель и пр. Всё это сразу грузили на подошедшие машины и везли во Всехсвятскую церковь.

В дальнейшем церковь полностью разобрали, и на ее месте построили первый в городе широкоэкранный кинотеатр «Березка». Логичное для той власти решение: вместо «центра мракобесия» – «центр культуры», ибо, по словам В.И. Ленина, «кино является для нас важнейшим из искусств».

***

Постскриптум:

1. Описанная в посте ситуация еще раз показала, как с течением времени описание реального события начинает заменяться мифологическими сюжетами. Это, собственно, касается многих исторических событий, например, ВОВ.

2. Не берусь утверждать, что версия моего отца по поводу «стояния» верная, а опубликованная в газете - ложная, не берусь утверждать и обратное. Всё субъективно, и во всем есть и зерна истины, и плевела. Просто опыт моей жизни убедил меня, что более полное и достоверное представление о каком-то событии можно получить, только зная мнения всех сторон, участвующих в этом событии, и критически анализируя эти мнения с позиции своего мировоззрения.

Показать полностью
8

Победила «Дружба»

В Полевском на лыжной базе ФСК СТЗ прошла туристическая эстафета среди воспитанников дворовых клубов города, посвященная 20-летию ТМК. Организаторами выступили шефы дворовых клубов копровый цех СТЗ.

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

Отличная работа, все прочитано! Выберите