Telegram бот на Python: пишем код просто

СОДЕРЖАНИЕ
0
17 просмотров
04 марта 2019

Пишем бот для Telegram на Python


Вначале может показаться, что Телеграмм – это простой мессенджер, такой же, как и другие. Да, он быстрый, защищенный, имеет открытый код и в нем отсутствует реклама. Но одна из самых интересных фишек данного приложения – это боты. Об этом, а также о том, как создать бот telegram python своими руками, мы и поговорим в этой статье.

Содержание

Популярное

 

Что такое боты и зачем они нужны

 


Итак, что же такое боты, а также для чего они нужны пользователю Телеграмм. Некоторые считают, что боты являются обычными автоответчиками, но это не так. Более правильно считать их автоматизированными помощниками. Например, вы хотите поделиться ссылкой на какое-то видео в YouTube, а самой ссылки у вас пока нет. Итак, вам нужно зайти на этот видео-хостинг, найти видео, нажать на «Поделиться», найти наш мессенджер, а если его в списке не будет, то нужно будет скопировать ссылку, вернуться назад в приложение и поделиться ею. И многие пользователи так и делают. Но бот дает возможность действовать проще и быстрее. Так, в процессе переписки вы можете ввести @vid, а затем название того видео, которое вы хотите добавить. Вот и все, осталось его только отправить участникам беседы. Это действительно очень удобно. А ведь здесь представлена всего одна из возможных функций ботов.

Пример кода бота на python в Телеграмм

Пример кода бота на python в Телеграмм


В Телеграмм можно создавать и своих ботов, которые будут впоследствии помогать вам решать свои задачи. Как его создать? В этой статье мы расскажем, как написать простой бот на telegram python и запустить его на сервере Heroku. Итак, как сделать бот на python telegram.

 

Что следует знать о боте на Python

 


Python представляет собой язык программирования, который был разработан не так давно. Он отличается простым и легким синтаксисом, который сделал этот язык буквально лидером в сфере программирования. Многие пользователи думают, что python telegram является лучшим языком программирования для создания такого бота, как Telegram Bot.

Логотип puthon

Логотип puthon


Использование ботов в мессенджерах помогает в разных ситуациях. Это личные помощники. Пользователь создает бота сам. Сделать это можно и при помощи Python. Для создания python telegram bot вам следует установить Python 3.6 либо выше и Pip.

 

Команды в telegram bot

 


Для того чтобы создать новые python боты telegram или изменить настройки у уже существующих, необходимо посредничество главного, а именно @BotFather. Через переписку с ним, пользователь сможет получить командный список, что дает возможность разработчикам выполнять ряд манипуляций. Сюда относится создание чат бота на python (/newbot), изменение имени (/setname), изменение описания, где указаны главные возможности робота (/setdescription), указание краткой информации, которая относится к данному аккаунту (/setabouttext), установка аватарки (/setuserpic), указание списка функций, что выводятся в окне с помощью такого символа, как «/» (/setcommands), размещение бота в группе (/setjoingroups), удаление аккаунта робота (/deletebot).

Обращение к botfather в Телеграмме

Обращение к botfather в Телеграмме


В целях создания чат бота python следует ввести команду python /newbot. Затем BotFather спросит имя. Затем оно будет отображено в контактах, а также в чатах, а также краткое имя, которое состоит из букв и заканчивается на «bot».

 

Глобальные команды

 


Все боты (telegram bot python) отличаются уникальным функционалом, который дает ему возможность выполнять ряд задач. Также существуют и простые команды, которые могут распознавать все роботизированные аккаунты. Это так называемые глобальные команды.


Сюда относится начало процесса общения, приветствие с пользователем (/start), отображение помощи (/help), а также список разных настроек, которые доступны пользователю (/settings).


На данное время назвать, сколько точно роботов в этом приложении, в целом невозможно. Эти помощники могут применяться для решения тех или иных задач, их количество растет. Боты на bot telegram python – это мощный ресурс для автоматизации тех или иных действий.

 

Webhook или getupdates

 


Существует два основных метода, которые позволяют получать информацию одинакового плана, но одновременно вы имеет возможность применять лишь один из них. Так, Webhook зависит от HTTPS сервера. Он обычно применяется в PHP. В отсутствии веб-интерфейса следует использовать getUpdates. Для него не нужен HTTPS адрес, через который обычно получаются обновления. Между этими двумя методами огромная разница.

Код getUpdates сервиса

Код getUpdates сервиса


Если вы будете применять «getupdates», вам не потребуется раскол. Вам следует просто вызвать prodically телеграмму, для чего предоставляется токен бот. Он позволит вам выполнять отправку обновлений. А это значит, что python telegram бот будет постоянно занят вызовом телеграммы. Применяя же второй метод, вы вначале получите телеграмму о ip-сервере. Потому, если у вас есть желание, чтобы telegram бот на python работал более быстро, применяйте webhook.

 

Начинаем: пишем бота для telegram на Python

 

Шаг 1. Создаем бота в telegram


Итак, вначале вам нужна регистрация в Telegram. Для знакомства с ботами удобнее всего применять веб-клиент. Ищите @BotFather в открытом приложении, а затем начинайте беседу. Вам нужно отправить команду /newbot, а затем следовать предложенным инструкциям. Когда вы выполните эти несколько шагов, то в результате получите адрес Telegram API, свой токен и ссылку на документацию. Все, этот этап завершен, а бот будет совершенно пассивным. Далее начинается беседа с ботом. Для этого вводите в поисковике его имя и далее нажимайте на /start. Вам нужно отправить какое-то сообщение, к примеру, слово «Привет». Данное сообщение является важным. Оно будет самым первым обновлением, которое получает телеграм на python. Нужны функции hello. Если работа с API выполняется впервые, то вам поможет лучше разобраться ваш браузер. Вам следует добавить новую вкладку и затем использовать Telegram API. Перейдите по ссылке, указанной ниже.


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


Изучив раздел в документации о методе /sendMessage, вы сможете увидеть, что здесь принимаются 2 основных параметра, а именно chat_id и text. Есть возможность создавать целые цепочки параметров, применяя ? в первом случае и & в других. Таким образом, команда отправки сообщений принимает вид:


Теперь вам следует получить ответ от бота. Для этого подставьте в форме chat_id то значение, которое было получено после вызова /getUpdates. В нашем примере это 303262877. Текст же сообщения бывает каким-угодно. А запрос принимает такой вид:


Теперь, если у вас еще не установлен Python, то вам нужно скачать его. После этого установите pip. Сделать это можно с помощью такой команды:


Также нужно иметь в виду, что Python может быть той или иной версии, а они применяют разные pip. Скачайте get-pip.py, откройте командную строку. После этого переходите в директорию, где находится файл, скачанный вами. После этого выполните команду, указанную ниже.


Ну вот, все самое сложное осталось позади. Теперь нужно установить пакет requests, для чего следует воспользоваться pip:

 

Шаг 2. Пишем основу бота

 


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


В словарь обновлений входит два элемента, а именно ok и results. Нам интересна вторая часть, а именно список обновлений, что были получены ботом за сутки.


Теперь добавляем еще две функции. Первая из них достает chat_id, которое есть в обновлениях, а вторая выполняет отправку сообщения.


Вам следует помнить, как были объединены параметры перед этим. Можно сделать это же, просто добавив словарь, как еще один дополнительный параметр в таких функциях, как get/post, взятых в пакете requests.

 

Шаг 3. Настройка ии

 


Вот скрипт и готов, однако он еще не идеальный. Его главным негативным моментом является то, что его нужно запускать каждый раз, когда бот должен отправлять сообщение. Это следует исправить. Для того чтобы бот получал обновления, следует запустить главный цикл. После import requests на новой строке добавляется from time import sleep. Далее две строки в конце должны быть заменены на такой код.


Был добавлен таймаут в размере 1 секунды, но пример выше используется лишь в целях обучения. Частые опросы плохо влияет на сервер, а потому их следует избегать. Обновления можно получить через API и через вебхуки и опросы длинного плана. Если метод получения будет осуществляться через getUpdates без параметров, то в результате возникнет слишком частый приход запросов.


В скрипте мы применяли основной цикл, потому необходимо выполнить переключение на длинные опросы. Для этого меняется первая функция, в которую добавляется параметр timeout. Он не сможет сам уменьшить частоту, с которой проверяются обновления, работая лишь в том случае, если их нет. Выполнять пометку обновлений, которые были уже вами просмотрены, следует, добавляя параметр сдвига offset. Наглядно смотрите ниже.

 

Шаг 4. Собираем все вместе

 


Далее бот можно еще улучшить. Для этого все функции сводятся в один класс. Получается похожее на то, что указано ниже.

 

Шаг 5. Заключительная часть

 


Последним штрихом является объявление переменных и обучение бота. Вначале нужно приветствие бота, при этом фраза меняется в течение дня. В этих целях в скрипт добавляется такой код.


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

 

Разворачиваем проект на сервере

 


Последний шаг в нашей работе – это разворачивание бота на сервере. Его у вас быстрее всего нет, а покупать необязательно. Есть ряд бесплатных решений, например, Heroku. Вначале вам нужно провести регистрацию на GitHub и создать там аккаунт, установить Git.


Если у вас установлен Линукс, то выполните такую команду.


Если у вас установлена ОС macOS либо же Виндоус, то вам следует его вначале скачать и затем установить. Далее следует регистрация на Heroku.


Теперь нужно установить virtualenv.


После этого наводим порядок в ваших файлах. Оформите новую папку. Выполните инициализацию в ней при помощи virtualenv.


Лучше, если имя будет понятным, но это не обязательно. Далее переходите в папку my_env. Вам нужно будет ввести команду, чтобы склонировать git-репозиторий.


Теперь скрипт следует разместить в папке, которая была получена после выполнения такой команды, как git clone.


Возвращайтесь в папку с названием my_env и далее запускайте virtualenv.


Для Виндоус:


Для Linux и macOS:


Если вами была успешно запущена virtualenv, то в командной строке приглашение будет начинаться с my_env. Теперь переходите в папку репозитория. Снова выполните установку модуля requests.


Далее следует провести несложную процедуру по созданию списка зависимостей Heroku.


Нужно создать Procfile. В данном файле размещаются инструкции, которые указывают, как работать со скриптом. Файл должен иметь имя Procfile или если это Виндоус, то Procfile.windows. Других расширений здесь нет. Далее, в предложенном содержимом файле нужно заменить my_bot на ваш скрипт.


В папку добавьте файл _init_.py. Этот файл пустой. Отправляем изменения в репозиторий.


Далее нужно выполнить развертывание бота на Heroku. При использовании macOS или Windows следует выполнить установку интерфейса командной строки, а в случае применения Ubuntu, использовать такие команды:


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


Приложение теперь будет работать на Heroku.


Коды ошибок ищите на сайте Heroku. И вот, теперь у вас есть вполне рабочий бот для телеграмма на python! Вы можете создать и чат бот для вк на python. Также можно быстро создать чат бот для telegram на python развертка aws. Но об этом в следующий раз.

Комментировать
0
17 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно