Как я и говорил в своей первой записи, на страницах этого дневника я собираюсь написать немного буковок на тему создания роботов (или ботов, как тебе нравится?) в Telegram. Собственно говоря, для создания таковых, я сам использую Python третьей версии, из чего следует то, что рассказывать буду я именно о Python.
Кто такие роботы и зачем они нужны
На самом деле роботы могут делать очень много интересных вещей, начиная рассылкой погоды, новостей, записей из ВКонтакте, поиском и скачиванием книг, музыки… в общем потенциал роботов ограничен разве что фантазией разработчика и API Telegram для ботов (последний ну очень уж богат возможностями).
К чему я всё это? Чтобы сложить небольшое представление о том, что мы будем делать дальше. Робот — это программа, написанная, кстати сказать, на любом языке программирования, и запущенная на каком-нибудь сервере (или на компьютере разработчика, в крайнем случае).
Пришло время начинать
Итак, для того, чтобы сделать своего первого робота, тебе потребуются:
Пишем TELEGRAM бота на Python
- Компьютер (ну а как же без него?) на macOS, Linux или Windows;
- Telegram, желательно также на компьютере, можно воспользоваться веб-версией, если лень скачивать;
- Python 3 и менеджер пакетов pip для него (всё это мы будем устанавливать ниже, не переживай).
Если всё готово, есть хотя бы компьютер и Telegram, то можем начинать.
Устанавливаем Python 3
Python 3 по-разному устанавливается на разные OS (уж простите за тавтологию), поэтому ниже тебе нужно найти твою OS.
Если у тебя macOS
Отправляемся на официальный сайт Python и загружаем (можешь нажать прямо здесь) .pkg установщик последней стабильной версии Python 3.5.2. Запускаем и устанавливаем Python на наш компьютер. После завершения установки можно открыть Terminal и попробовать выполнить команду python3 . Если всё установилось правильно (как на картинке ниже), то у тебя на macOS теперь можно смело начинать программировать на Python.
Менеджер пакетов pip устанавливается автоматически вместе с Python3, выполнение команды pip3 -V должно вывести в терминал следующее:
Где вместо 8.1.2 будет указана твоя версия pip .
Если у тебя Windows
Переходим на официальный сайт Python и выбираем нужную нам версию 3.5.2: для 32-разрядных или версию для 64-разрядных систем (зависит от твоего компьютера; узнать разрядность можно, открыв Проводник — Этот компьютер — и по нажатию на правую кнопку мыши выбрать пункт Свойства).
Когда мы скачали нужную версию Python, запускаем установщик. Важно: на самом первом этапе установки необходимо отметить Add Python 3.5 to PATH , это очень упростит нашу работу в будущем. Затем нажимаем на Install now и ждём окончания установки.
Чтобы проверить, правильно ли установился Python, открываем меню Пуск и в строке поиска набираем командная строка (в Windows 10 открыть поиск можно, просто нажав на лупу рядом с кнопкой Пуск).
В открывшемся окне командной строки выполняем команду python . В ответ должна открыться консоль Python (начинается с >>> ) как на картинке ниже.
Выполняем команду exit() , чтобы выйти из режима интерпретатора Python. Менеджер пакетов pip так же должен быть установлен, чтобы проверить, выполни команду pip -V . В ответ в консоли должна отобразиться версия pip :
В Linux и другие Unix-системы Python 3.5 устанавливается аналогично macOS.
Таким образом, мы подготовили наш компьютер для программирования и исполнения программ на Python 3.
Подготавливаем Python для создания роботов
Что такое «менеджер пакетов pip » и для чего он нужен нам, спросишь ты. Так вот, менеджер пакетов — это такая утилита, с помощью которой можно скачивать (и сразу устанавливать) различные модули для Python. В macOS нужно использовать команду pip3 вместо pip (команда pip здесь используется для встроенной версии Python 2.7).
Возвращаемся в терминал (или в командную строку) и выполняем следующую команду:
Что здесь просиходит? Мы обращаемся к pip (помни: в macOS это pip3 ) и хотим установить ( install ) волшебный модуль pyTelegramBotAPI , который и отвечает за создание и работу ботов.
Если модуль успешно установился, то мы должны увидеть надпись Successfully installed pyTelegramBotAPI-x.x.x . Собственно говоря, существует множество других модулей для Python (и не только), с помощью которых можно быстро запустить Telegram-бота; простыми словами pyTelegramBotAPI — это такой «конструктор», в котором содержатся все необходимые нам компоненты-«кубики».
Можно переходить к самой интересной части — написанию кода нашего робота.
Пишем код нашего первого робота
Для того, чтобы писать код, нам понадобится редактор. Можно, конечно, воспользоваться и Блокнотом, но лично я бы не советовал. Лучше всего скачать бесплатный редактор Atom от создателей GitHub. Или Sublime Text 3 (но он платный, вроде бы). Я пользуюсь Sublime Text, и писать код буду в нём.
Ну, а тебе уж решать самому.
Перво-наперво подключаем модуль telebot , который мы установили с помощью pip . Делаем это так:
Если логин никем не занят, то Bot Father отпавит нам сообщение об успешном создании нового бота. Всё, что нам нужно узнать из полученного сообщения — длинную строку, TOKEN бота. Это ключ, с помощью которого мы сможем управлять нашим роботом через Python.
В моём примере ключ: 242589731:AAGDz-F8q5TN0IfD3Y_D4WB0BmerHm1UYiw . Можешь не пытаться его использовать, он уже обновлён ?
Возвращаемся в текстовый редактор, и добавляем следующую строку, где присваиваем переменной TOKEN наш ключ-строку:
Теперь можно создать объект нашего робота, так и назовём его — bot . В аргументах указываем ключ для аутентификации в Telegram:
Отлично, мы зарегистрировали бота и смогли передать его управление Python.
А сейчас нужно подумать (а может, думать надо было с самого начала?) о том, что будет делать наш робот. Поскольку эта запись посвящена созданию «первого» робота в Telegram, я думаю, не стоит делать нашего бота очень сложным.
Пусть будет так: когда кто-то запускает робота, то робот спрашивает имя пользователя, и после того, как получает имя, приветствует его.
Наша библиотека pyTelegramBotAPI (модуль для Python) поддерживает обработчики (или хэндлеры), с помощью которых можно научить робота отвечать на различные сообщения. Подробнее об обработчиках можно почитать здесь. Создадим обработчик, который будет отвечать на команду /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 , например robot.py . Важно знать папку, в которую мы сохранили файл.
Возвращаемся в терминал (или командную строку) и выполняем следующую команду:
Замечу, что в Windows используется команда python , а в macOS python3 (поскольку в macOS ещё установлен Python 2.7).
Ничего не происходит? Замечательно, всё так и должно быть. Может даже показаться, что терминал завис, но это совсем не так.
Если ты всё правильно сделал, то робот должен ответить:
Отправляем роботу наше имя.
Прекрасно! Всё работает ☺️
Чтобы выключить робота, вернись в терминал и нажми сочетание клавиш Ctrl + c .
У тебя получилось сделать своего первого робота, поздравляю ?
Что дальше?
Источник: messagu.ru
Telegram бот на Python для мониторинга состояния Ubuntu сервера
Для web-мастеров самым важным остается стабильность в работе серверов, однако как оперативно реагировать и устранять возникшие проблемы в их работе? С этой задачей лучше всего справится Telegram бот, написанный на Python, для мониторинга состояния Ubuntu сервера который будет автоматически отправлять Вам уведомления о недоступности тех или иных компонентов для оперативного реагирования и устранения возникших проблем.
Для автоматизации оповещений о недоступности веб-серверов Nginx, Apache, MySQL и других на Ubuntu сервере с помощью Telegram-бота на Python необходимо выполнить следующие шаги:
Установка необходимых пакетов
Перед тем как начать установку, необходимо убедиться, что сервер имеет Python 3, pip и git.
Чтобы установить их, выполните следующие команды в терминале:
sudo apt update sudo apt install python3 python3-pip git
Создание нового Telegram-бота
Прежде чем мы начнем написание кода бота, необходимо создать Telegram-бота, получить его API-ключ и узнать ID вашего чата.
Для этого следуйте инструкциям, приведенным в этом руководстве: https://core.telegram.org/bots#6-botfather.
Клонирование репозитория для отправки уведомлений
Создайте новый каталог для проекта и склонируйте репозиторий, содержащий код для отправки уведомлений, с помощью следующих команд:
mkdir notify-telegram-bot cd notify-telegram-bot git clone https://github.com/python-telegram-bot/python-telegram-bot.git
Установка зависимостей
Перейдите в каталог python-telegram-bot, который вы только что склонировали, и установите зависимости с помощью команды:
cd python-telegram-bot pip3 install -r requirements.txt
Написание кода бота
Перейдем к написанию самого кода Telegram бота на Python, который будет выполнять мониторинг состояния Ubuntu сервера. Для этого откройте файл examples/echobot2.py с помощью любого текстового редактора и замените содержимое файла следующим кодом:
import telegram import subprocess bot = telegram.Bot(token=’YOUR_API_KEY’) chat_id = ‘YOUR_CHAT_ID’ def is_server_up(service_name): process = subprocess.run([‘systemctl’, ‘status’, service_name], stdout=subprocess.PIPE) output = process.stdout.decode(‘utf-8’) return ‘Active: active (running)’ in output def check_services(): services = for service in services: if not is_server_up(service): message = services[service] + ‘ is not running!’ bot.send_message(chat_id=chat_id, text=message) if __name__ == ‘__main__’: check_services()
Замените YOUR_API_KEY на API-ключ вашего бота и YOUR_CHAT_ID на ID вашего чата.
Проверка бота
Сохраните файл и запустите его с помощью команды:
python3 echobot2.py
Если все настроено правильно, бот должен отправить сообщение в ваш Telegram-чат, указывая, что сервер недоступен.
Автоматизация проверки доступности сервера
Теперь, когда бот работает, необходимо настроить автоматическую проверку состояния сервера. Для этого создайте файл check_services.py с помощью любого текстового редактора и добавьте следующий код:
import time import os while True: os.system(‘python3 /path/to/echobot2.py’) time.sleep(300)
Замените /path/to/echobot2.py на полный путь к файлу echobot2.py , который вы только что создали.
Этот код будет проверять состояние сервера каждые 5 минут.
Запуск проверки в фоновом режиме
Чтобы запустить проверку в фоновом режиме, выполните следующую команду:
nohup python3 /path/to/check_services.py https://virtirio.com/blog/telegram-%D0%B1%D0%BE%D1%82/» target=»_blank»]virtirio.com[/mask_link]
Telegram Bot с Python для Todoist
В этом посте я объясню, как создать бота Telegram на Python. Todoist — отличный инструмент для управления списками дел. Хотя этот пост может быть просто общим руководством по созданию бота Telegram, я расскажу о подключении к Todoist API и внедрении его возможностей в Telegram, чтобы вы могли узнать больше о работе с реальным API и взаимодействии с пользователями в ботах Telegram.
Предполагается, что вы знакомы с основами Python. Вы узнаете:
- Создание бота Telegram с отцом бота Telegram
- Работа с API в Python
- Написание скрипта бота Telegram на Python
- Взаимодействие с пользователями в боте Telegram (отображение кнопок, ответ на сообщение и т. Д.)
Создание бота Telegram
Прежде всего, нам нужно получить дескриптор Telegram для нашего бота. Кроме того, нам нужен токен доступа для подключения и взаимодействия с Telegram.
Получите имя пользователя бота (дескриптор Telegram) и токен доступа
После этого вы получите сообщение с данными вашего бота, включая токен доступа вашего бота для HTTP API. Мы будем использовать это в следующих шагах.
Взаимодействие с API в Python
Чтобы создать полезного бота для Telegram, вам необходимо хорошо разбираться в работе с API.
Я прочитал много руководств по созданию ботов Telegram, но я хотел написать бота, который работает с реальным API, а не бота, чтобы показывать картинки с кошками (что, кстати, тоже очень круто).
Todoist — отличный инструмент для управления делами. Несмотря на то, что у него отличное мобильное приложение, оно может помочь вам или вашей команде выполнять ваши задачи в Telegram.
Также, используя Todoist API, вы узнаете, как взаимодействовать с реальными API.
APIHandler Класс
У Todoist есть официальная библиотека Python API. С его помощью вы можете легко взаимодействовать с Todoist API. Сначала мы собираемся изучить эту официальную библиотеку. Затем с помощью пакета запросов Python мы взаимодействуем с Todoist REST API. Поскольку многие сторонние API не поддерживают такие библиотеки Python, важно научиться использовать пакет запросов Python для выполнения HTTP-запросов для RESTful API.
Получение токена доступа к Todoist
Прежде чем мы начнем, вам нужно получить токен доступа для Todoist API. Просто зайдите в Консоль приложения Todoist и создайте новое приложение. После создания приложения вы увидите client id и client secret , которые необходимо использовать в приложении производственного уровня для аутентификации пользователей.
На данный момент нам нужно только получить токен доступа для наших тестов. Прокрутите вниз, и вы увидите свой токен доступа. Теперь давайте попробуем это в действии.
Официальная библиотека Python Todoist
Теперь установите пакет TodoistAPI с помощью программы Python, выполнив эту команду: pip install todoist-python
Используя библиотеку API Todoist, получить проекты очень просто.
Не забудьте указать свой токен доступа в api_token переменную.
Взаимодействие с RESTful API с использованием запросов Python
Для вызова API вам необходимо использовать пакет запросов Python. Установите его с помощью pip: pip install requests
Пакет запросов имеет две основные функции, которые мы можем использовать для выполнения get или post запросов.