Евгений Сазонов
709
Блоги

Бот в 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": 21, "is_advertisement": false, "section_name": "blog", "id": "41928", "is_wide": "" }
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Подписаться на push-уведомления
[ { "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" } } } ]