Оффтоп Евгений Сазонов
753

Бот в telegram. Как сэкономить время на разработку, если пишешь впервые

Осознание после проведения ревью. Несколько пунктов, на которые ушло больше всего времени.

В закладки
Среда разработки Pycharm для mac

Привет, читатель.

Некоторое время назад я задался целью первый раз в жизни написать собственного telegram бота (по иронии судьбы, как раз после того, как его заблокировали и хайп насчет этого угас). Бота я написал, он функционирует.

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

Пишу надеясь на то, что они помогут таким же как я, кто впервые хочет сделать своего бота в telegram, но не знает с чего начать. Здесь нет детальных действий. Как говорится, главное задать вектор.

  1. @Botfather. Зайди к этому боту в telegram. С помощью него создай своего бота. Там будет только мета (т.е. общая) информация: название, описание, фото, команды. Ах да, Botfather даст тебе токен твоего бота. Токен - это закодированная строка из цифр и букв. С помощью него происходит все управление ботом. Не говори никому токен и не пиши его нигде в открытом доступе.
  2. Pycharm. Среда разработки. В ней нужно писать код своего бота. По мне, вещь удобная и позволяет напрямую устанавливать пакеты (см.п.3).
  3. Почти все уже написано до тебя. Если ты хочешь что-то написать, тебе стоит лишь разбить это на логические части. Есть куча разных библиотек, которые устанавливаются либо через Pycharm(привет, п.2), либо через системную консоль. Например, стоит только установить бибилиотеку «yadisk» и 2мя командами можно отправить файл через бот напрямую из вашего Яндекс диска. Благодаря этому, бота telegram может написать даже человек, совсем далекий от программирования.
  4. Табуляция, а не «;». Если будешь писать на Python учти, что в нем логически выделяют конструкции не «;» а пробелы и табуляция (ох, сколько же много времени у меня ушло, чтобы привыкнуть и не делать совсем простых ошибок).
  5. Ngrok. Запускать рабочего бота можно и с локального компьютера. Для этого нужно сделать «туннель» (фиктивный сайт, который перенаправляет на твою локальную машину). Погугли «ngrok». Этот вариант бесплатен, но не удобен — нужен бесперебойно работающий и подключенный к сети компьютер. Походит скорее для тестирования нового кода.
  6. PythonAnywhere. Если хочешь сделать все красиво и разместить код на удаленном сервере — PythonAnywhere твой выбор. Там все довольно просто. Можно сделать все бесплатно. Хочешь бОльшую пропускную способность/больше места на диске/свою базу данных, тогда нужно будет заплатить. Цены (как по мне) очень адекватные. Тут есть консоль, так что готовые библиотеки устанавливаются точно также, как и в п.3.
  7. MySQL. Сразу делай свое хранилище и собирай статистику о пользователях и их действиях. Если выберешь сервер как и я в п.6, то будет доступна БД MySQL. Это пригодится для отправки сообщений тем, кто уже пользовался ботом, отслеживания их действий, предпочтений. Поможет тебе сделать бота лучше и удобнее для пользователей. Не представляю как без этого вообще можно управлять ботом.

Удачи!

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Евгений Сазонов", "author_type": "self", "tags": [], "comments": 22, "likes": 2, "favorites": 1, "is_advertisement": false, "subsite_label": "flood", "id": 41928, "is_wide": false, "is_ugc": true, "date": "Sat, 14 Jul 2018 16:27:53 +0300" }
{ "id": 41928, "author_id": 73030, "diff_limit": 1000, "urls": {"diff":"\/comments\/41928\/get","add":"\/comments\/41928\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/41928"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791 }

22 комментария 22 комм.

Популярные

По порядку

Написать комментарий...
2

Почему VC постепенно превращается в Хабр?

Ответить
4

Это что, сейчас хабр такой? Божечки

Ответить
0

Потому, что Хабр уже не торт? )

Ответить
0

Не уловлю интонации. Не писал ничего на хабре. Да и на vc до этого тоже. Предугадываю следующий ответ "лучше бы и не писал", так?

Ответить
2

Нынче с таким набором не берут на Хабр, поэтому вы выкладываете сюда?

Ответить
0

С таким набором никуда не берут

Ответить
2

Python с каких-то пор стал дефолтным языком программирования? Скрипт-киддис атакуэ?

Ответить
0

А вы бы писали бота для телеграмма, что бы вы взяли?

Ответить
0

Надеюсь, оригинальный? А запустим на 8080

Ответить
0

8080 - это вчерашний день. х86 будет в самый раз.

Ответить
0

Вы не уловили сарказм, Бейсик это вчерашний день

Ответить
0

Серьезно? XD

Ответить
0

Что бы не начинать священную войну, скажу что каждый извращается как он хочет

Ответить
0

Не - просто много на чм ботов можно настругать. Node/js и python вполне ок, кто в них шарит. Что не так? Ms еще вроде C# предлагала в рамках Bot Framework вместе с нодой

Ответить
0

Golang number one

Ответить
1

На Хабре за обилие повелительного наклонения и вот этого "здесь нет детальных действий" сразу накидали бы кучу минусов в карму.
А на vc, глядишь, пару лайков поставят из жалости к автору.

Ответить
0

Хабр, мягко говоря, не идеален, да

Ответить

Комментарий удален

0

Зачем писать код? Если можно воспользоваться конструктором , где есть функционал в разы превосходящий то, что делают 90% людей сейчас на рынке.

Ответить
0

И тут должна быть ссылка и перечень уникальных возможностей конструктора вместе с кошельком автора?

Ответить
0

Да, проще. Но в любых конструкторах много ограничений. Даже в конструкторе сайтов на wix, например, недавно сделали удобную обертку для добавления личного кода.

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Хакеры смогли обойти двухфакторную
авторизацию с помощью уговоров
Подписаться на push-уведомления