Привет Друзья. Мы постепенно продвигаемся к цели — создать собственного бота в Telegram. В первой части мы разобрались, кто такие боты и зачем они нужны. При помощи  @BotFather создали нашего первого бота — @BotanikRobot. Изучили как при помощи команд провести первоначальную настройку бота, задать аватарку. Заполнили описание бота и приветственное сообщение. Определились с методами взаимодействия с ботом.

PyCharm и Python3

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

Устанавливаем Python3

Писать код я буду под Виндой, поэтому:

Переходим на официальный сайт Python и выбираем нужную нам версию 3.6.4: для 32-разрядных или версию для 64-разрядных систем (зависит от твоего компьютера; узнать разрядность можно, открыв Проводник — Этот компьютер — и по нажатию на правую кнопку мыши выбрать пункт Свойства).

Когда мы скачали нужную версию Python, запускаем установщик.

Важно: на самом первом этапе установки необходимо отметить Add Python 3.6 to PATH, это очень упростит нашу работу в будущем. Затем нажимаем на Install now и ждём окончания установки.

 

Чтобы проверить, правильно ли установился Python, открываем меню Пуск и в строке поиска набираем командная строка (в Windows 10 открыть поиск можно, просто нажав на лупу рядом с кнопкой Пуск) или Win+R.

В открывшемся окне командной строки выполняем команду python. В ответ должна открыться консоль Python (начинается с >>>) как на картинке ниже.

Выполняем команду exit(), чтобы выйти из режима интерпретатора Python. Менеджер пакетов pip так же должен быть установлен, чтобы проверить, выполни команду pip -V. В ответ в консоли должна отобразиться версия pip:

Возвращаемся в терминал (или в командную строку) и выполняем следующую команду:

Что здесь просиходит? Мы обращаемся к pip и хотим установить (install) волшебный модуль pyTelegramBotAPI, который и отвечает за создание и работу ботов.

Если модуль успешно установился, то мы должны увидеть надпись Successfully installed pyTelegramBotAPI-x.x.x. Собственно говоря, существует множество других модулей для Python (и не только), с помощью которых можно быстро запустить Telegram-бота; простыми словами pyTelegramBotAPI — это такой “конструктор”, в котором содержатся все необходимые нам компоненты-“кубики”.

Устанавливаем PyCharm

Ура. Теперь наш компьютер уже умеет работать с языком программирования Python. Сам программный код можно писать хоть в Блокноте, но это очень неудобно. Нам нужна умная среда, которая будет подсвечивать набираемый код и автоматически указывать на различные ошибки в нем.

Могу порекомендовать отличную и бесплатную среду — PyCharm от JetBrains. Эта компания специализируется на создании профессиональных сред для программирования. Если Microsoft Office практически всегда используется для работы с таблицами/презентациями и текстовыми документами, то программы от JetBrains занимают лидирующее положение среди программистов.

Итак, переходим на страницу скачивания PyCharm. Для скачивания доступно две версии: профессиональная и версия для сообщества. Версия для сообщества бесплатная. Ее и скачаем:

Запускаем скачанный .exe файл. В первом окне нас приветствует сам установщик. Смело кликаем «Next». Дальше надо указать место установки среды.

Важный момент! На следующем окне обязательно выделить галочку «Download and install JRE x86 by JetBrains», если у вас на компьютере не установлена Java. Если вы не знаете, что это такое, то лучше поставьте эту галочку ? Также рекомендую отметить галочку «.py» для того, чтобы все файлы с программным кодом по умолчанию открывались в PyCharm. Это удобно.

После окончания установки запускайте PyCharm. После красивого окна загрузки появится стартовое окно программы. Если поверх стартового окна у вас выскочило второе маленькое окошко, то просто нажмите «OK». Создайте новый проект, кликнув на «Create New Project» 

В следующем окне будет два поля. В первом укажите, где будет располагаться новый проект. Второе поле должно быть заполненным по умолчанию. Там содержится путь к установленному ранее Python. Если там пусто, то укажите путь вручную.

Дальше откроется окно самого редактора.

Теперь вы готовы начать писать программы на Python!

Давайте проверим, как все работает. Для этого кликните правой кнопкой на название вашего проекта и в раскрывающемся списке выберите пункт «New > Python file». Появится окно, в котором вы можете задать имя файлу. Задайте какое-нибудь имя и нажмите «OK». Справа откроется сам файл. Пока он пустой.

Начинаем писать код

Можно переходить к самой интересной части — написанию кода нашего бота. Открываем

Перво-наперво подключаем модуль telebot, который мы установили с помощью pip. Делаем это так:

В первой части при создании бота, мы получили Token бота. Это ключ, с помощью которого мы сможем управлять нашим роботом через Python.

В моём примере ключ: 520178827:AAF_cO8nnjZe23iddW63jBWP-Zb4j4xDfzw. Можешь не пытаться его использовать, он уже обновлён ?

Возвращаемся в PyCharm, и добавляем следующую строку, где присваиваем переменной TOKEN наш ключ-строку:

Теперь можно создать объект нашего робота, так и назовём его — bot. В аргументах указываем ключ для аутентификации в Telegram:

Отлично, мы передали его управление Python.

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

Пусть будет так: когда кто-то запускает бота, то бот спрашивает имя пользователя, и после того, как получает имя, приветствует его.

Наша библиотека pyTelegramBotAPI (модуль для Python) поддерживает декораторы (или хэндлеры), с помощью которых можно научить бота отвечать на различные сообщения. Подробнее об обработчиках можно почитать в Telegram Bot API. Создадим декоратор, который будет отвечать на команду /start (эта команда соответствует нажатию кнопки Start или Запустить, в профиле бота в Telegram); внутри обработчика создадим функцию, в которой будем спрашивать имя пользователя.

Давай разберемся в коде:

  • Обработчик, который отвечает на команду /start (или любые другие, какие указаны в списке);
  • Функция в обработчике, которая спрашивает у пользователя его имя;
  • В переменную sent записывается объект отправленного текстового сообщения с вопросом “Как тебя зовут?”; первый аргумент функции send_message — уникальный ID пользователя Telegram (получаем его из предыдущего сообщения message.chat.id), который обратился к нашему боту, и которому нужно отправить сообщение; второй аргумент — строка, текст сообщения;
  • Функция register_next_step_handler, принимающая в аргументы объект отправленного сообщения и имя следующей функции hello отвечает за то, что следующее сообщение от пользователя будет обработано функцией hello.

Далее создадим саму функцию hello, в которой и будем приветствовать нашего дорогого пользователя:

  • Создаём функцию (в аргументы, кстати, и hello и start принимают объект входящего сообщения от пользователя, там есть текст, ID, и многое другое);
  • Отправляем сообщение с приветствием, в name подставляем текст полученного сообщения от пользователя (то есть его имя).
    Вот так с помощью двух функций мы научили нашего робота несложным действиям.

Последнее, что осталось добавить в код:

Зачем? Можно, конечно, запустить бота и без этой строки, но тогда он проработает не более одной секунды (а может и меньше). Суть в том, что при помощи функции polling наш робот постоянно обращается к серверам Telegram и как бы спрашивает “есть ли новые сообщения для меня (т. е. бота)?”, получая ответы от Telegram.

Весь код нашего бота выглядит примерно так:

Теперь запустим наш код.

Важно. Вы можете писать код и в обычном текстовом редакторе. Но тогда чтобы запустить код бота, необходимо сохранить код нашего бота в файл с расширением .py, например test.py. Важно знать папку, в которую мы сохранили файл.

Возвращаемся в терминал (или командную строку) и выполняем следующую команду:

Ничего не происходит? Замечательно, всё так и должно быть. Может даже показаться, что терминал завис, но это совсем не так.

Не закрываем терминал (оставляем всё как есть) и открываем нашего бота в Telegram (по логину, у нас был @BotanikRobot, либо по ссылке из сообщения от @BotFather). Запускам бота кнопкой Start (или Запуск, зависит от локализации).

Если ты всё правильно сделал, то бот должен ответить. В итоге получаем следующий диалог:

Поздравляю, вот собственно и все. Наш бот работает. Чтобы остановить бота в PyCharm нажми кнопку стоп, а в командной строке сочетание Ctrl+C.

Что дальше?
А дальше только твоя фантазия и желание учиться. Я оставлю ссылки, которые помогли (и помогают до сих пор) мне в этом деле. Если у тебя есть вопросы, ты всегда можешь задать их в комментариях ниже.

  • Учебник по Python 3 (http://pythonworld.ru) — отличный русскоязычный сайт с которого можно начать изучать Python;
  • Уроки по созданию ботов Telegram от @Groosha (https://www.gitbook.com/book/kondra007/telegram-bot-lessons/details) — всё, что нужно знать о роботах Telegram на Python, очень подробно и понятно рассказано о многих аспектах разработки ботов;
  • Репозиторий pyTelegramBotAPI на GitHub (https://github.com/eternnoir/pyTelegramBotAPI) — подробная англоязычная документация по модулю telebot, описаны все функции и есть несколько примеров в каталоге examples;
  • Telegram Bot API (https://core.telegram.org/bots/api) — полная официальная англоязычная документация с описанием всех возможностей и функций API Telegram для ботов.

В следующей статье мы с тобой объеденим два (Бегущую строку на Arduino и Telegram Bot Botanik) наших проекта в один мега проект и добавим функциональности нашему боту @BotanikRobot. Так что если тебе понравилась статья, тогда поделись ссылкой со своими друзьями и оставь комментарий.

Поддержи проект репостом или копеечкой.