Рассмотрим разработку и запуск ботов для мессенджера Телеграм. В качестве языка разработки будет использоваться Python. Запускать код на выполнение будем в рабочих тетрадках (блокнотах) замечательной среды разработки Colab компании Google. Код бота, размещенный в Colab, будет взаимодействовать c сервером Telegram через API.
Telegram (от др.-греч. τῆλε «далеко» + др.-греч. γράμμα «запись») — кроссплатформенная система мгновенного обмена сообщениями (мессенджер) с функциями VoIP, позволяющая обмениваться текстовыми, голосовыми и видео- сообщениями, стикерами и фотографиями, файлами многих форматов. Также можно совершать видео- и аудио- звонки и трансляции в каналах и группах, организовывать конференции, многопользовательские группы и каналы. Клиентские приложения Telegram доступны для Android, iOS, Windows Phone, Windows, macOS и Linux.
API (МФА [ˌeɪ.piˈaɪ]; аббр. от англ. Application Programming Interface — «программный интерфейс приложения») — описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой. Обычно входит в описание какого-либо интернет-протокола, программного каркаса (фреймворка) или стандарта вызовов функций операционной системы. Часто реализуется отдельной программной библиотекой или сервисом операционной системы. Используется программистами при написании всевозможных приложений.
Telegram Bot на Python | Часть 1. Наш первый телеграм-бот на библиотеке-обёртке python telegram bot
Бот (англ. bot, сокращение от чеш. robot) — виртуальный робот, который функционирует на основе специальной программы, выполняющий автоматически и/или по заданному расписанию какие-либо действия через интерфейсы, предназначенные для людей. Боты находят также применение в условиях, когда требуется лучшая реакция по сравнению с возможностями человека (например, игровые боты, боты для интернет-аукционов и тому подобное) или, реже, для имитации действий человека (например, боты для чатов и тому подобное). Чат-бот может выдать достаточно адекватный ответ на вопрос, сформулированный на правильном русском языке (или любом другом, работа с которым поддерживается). Такие боты часто применяются для сообщения прогноза погоды, результатов спортивных соревнований, курсов валют, биржевых котировок и тому подобное.
Чат-бот — это программа, работающая внутри мессенджера, например Telegram. Такая программа способна отвечать на вопросы, а также самостоятельно задавать их. Чат-боты используются в разных сферах для решения типовых задач.
C точки зрения прикладной информатики (и прикладной информатики в экономике в частности), создание чат-бота — это не только следование последним тенденциям. Прежде всего, речь идёт о сокращении затрат, увеличении конверсии и улучшении качества обслуживания клиентов. Сотни компаний делают всё возможное, чтобы достичь вышеупомянутых целей. И для их достижения необходимы боты как первостепенный инструмент.
Согласно текущей статистике за 2022 год, недвижимость является ведущей отраслью по прибылям от чат-ботов (28 %). Затем идут путешествия (16 %), образование (14 %), здравоохранение (10 %) и финансы (5 %).
Чат-боты могут использоваться в службах поддержки, помогая решить простые вопросы, например, такие как смена пароля.
Чат-боты можно использовать для поиска информации. Например, прогноз погоды, афиша мероприятий.
В сфере путешествий стали одними из первых использовать чат-боты. Чат-бот может предложить направления/рейсы/рестораны — на основании поисковых запросов и предпочтений пользователя. После покупки программа обеспечивает клиентскую поддержку, предоставляя ответы на часто задаваемые вопросы.
Практическая часть
Чтобы создать бота, нам нужно дать ему название, адрес и получить токен — цифро-символьную строку, которая будет однозначно идентифицировать бота.
Необходимо найти бота, нажать кнопку «Запустить» (или написать /start), в ответ BotFather пришлет список доступных команд.
Отправим боту команду /newbot, чтобы создать нового бота. В ответ он попросит ввести имя будущего бота, его можно писать на русском. После ввода имени нужно будет изобрести адрес бота, причем он должен заканчиваться на слово bot. Например, drach_pro_bot. Если адрес уже кем‑то занят, придётся придумывать новый.
Когда бот будет создан, мы получим сообщение, в котором будет исчерпывающая техническая информация о боте. Обратите внимание, что после фразы Use this token to access the HTTP API будет написана строка из букв и цифр — это токен.
Реализуем бота для Telegram, воспользовавшись возможностями языка Python. Понятно, что чтобы бот всегда работал, его код должен быть запущен и выполняться 24 часа в сутки. Значит, потребуется сервер (для надежности под операционной системой Linux), на котором установлен Python. Если такого сервера нет, можно запускать код на собственной домашней машине, но тогда придётся повозиться с настройками роутера. Но есть ещё один интересный вариант, который очень подходит для тестирования и изучения ботов — это Colab.
Работать будем в рабочей тетради Colab, так как это нам даёт замечательные преимущества: не надо устанавливать собственный сервер в Интернет и не надо перенастраивать домашний роутер.
Далее в рабочей тетради Colab проверяем версию Python. Чтобы операция выполнялась на уровне операционной системы (а не языка программирования), перед командой ставим восклицательный знак:
!python3 —version
Должны получить ответ вида:
Python 3.7.13
Для взаимодействия с Telegram API средствами языка Python разработаны несколько модулей. Самый простой из них — Telebot. Устанавливаем необходимый пакет:
!pip3 install pytelegrambotapi
В редчайших случаях, возможно, понадобится написать просто pip вместо pip3.
Задача 1. ЭХО
Сначала реализуем простейшего бота – для понимания процесса. Он будет получать от пользователя текстовое сообщение и возвращать его же. Используем код:
Для запуска бота в Colab нажимаем Ctrl+F9.
Если всё запустилось без ошибок, переходим в Telegram – проверять работу бота. Ищем бота по придуманному ранее адресу. Запускаем бота кнопкой «Запустить» (Start) или командой /start. При правильной работе бот возвращает сообщения отправителю один-в-один.
Задача 2. Бот-всезнайка
Более сложный бот, который будет давать определения для введённых терминов. Черпать информацию будем из Википедии по той причине, что для этого уже разработан прекрасный модуль:
!pip3 install wikipedia
Используем следующий код и запустим его.
Задача 3. БОТ С ДВУМЯ ВИРТУАЛЬНЫМИ КНОПКАМИ
Во многих ботах для выбора каких‑то действий применяются так называемые виртуальные кнопки. Реализуем ветвление. Пользователь будет выбирать, что он хочет прочитать (например, афоризмы или новости).
Потребуется создать два файла: thinks.txt и facts.txt, которые содержат список сегодняшних новостей и афоризмы. Одна строка – одно утверждение. Лучше создать хотя бы три строки в каждом.
На данном этапе куда удобнее будет привязать Google drive (Гугл-диск) к Colab и загрузить туда текстовые документы.
Команда для привязки Гугл-диска:
from google.colab import drive
drive.mount(‘/content/drive’)
Важно! Если использовать для этого бота тот же токен, что и для предыдущего, то, чтобы увидеть кнопки, потребуется перезапуск командой /start.
Telegram боты и их создание
Продукт Павла Дурова при ближайшем рассмотрении вызывает все больше восхищения. Начинаешь понимать, почему TELEGRAM пользуется такой сумасшедшей популярностью по всему миру. В целом продукт создает воркуг себя целую экосистему. С помощью различных его функций можно решать огромное количество бизнес задач и задач из личной жизни. Особенно четко это видно, когда Вы начинаете создавать своих Telegram ботов. Мне, откровенно, не совсем понятно, зачем власти России воют с продуктом, который является одним из самых революционных в мире.
Telegram боты — фишка, дающая возможность автоматизировать различные процессы, с помощью мессенджера Дурова. Любой желающий может создать себе бота, ознакомиться с API и напрограмиировать все, что душе угодно. Возможности, лично меня, поражают. Я в этой статье покажу основные вещи, которые может использовать каждый. Для этих целей мы будем использовать язык программирования Python и соответствующие библиотеки для работы с Telegram — python-telegram-bot.
Программируем на Python
Для начала, нужно установить библиотеку python-telegram-bot
$ pip install python-telegram-bot —upgrade
Теперь мы готовы создавать сам бот. Для начала импортируем нужные нам модули, чтобы можно было обрабатывать поступающие команды от пользователей бота:
from uuid import uuid4 from telegram.utils.helpers import escape_markdown from telegram import ParseMode, InputTextMessageContent from telegram.ext import Updater, CommandHandler, Filters, MessageHandler, RegexHandler, ConversationHandler import logging import subprocess
После чего мы можем использовать весь нужный нам функционал. Во первых, давайте посмотрим, как создать обработку команд, которые пользователь вводит при общении с ботом. Команды обычно начинаются с символа «/». Обработка комманд происходит через функцию CommandHandler.
def start(bot, update): update.message.reply_text( ‘This is personal bot of Andrey Useinov.n’ ‘Send /help for more information about commands.’) updater = Updater(TOKEN) dp = updater.dispatcher dp.add_handler(CommandHandler(«start», start))
С помощью этого кода, telegram бот будет возвращать сообщение о себе в ответ на команду /start.
Вторя по популярности и применямости функция — MessageHandler. С помощью нее происходит обработка обычных сообщений в чате с telegram ботом. Ниже создадим функцию, которая будет симметрично отвечать на любое сообщение боту.
def echo(bot, update): update.message.reply_text(update.message.text) dp.add_handler(MessageHandler(Filters.text, echo))
Третья важная функция при программировании ботов — ConversationHandler. Она позволяет организовывать диалог при общении с ботом. Так мы рассмотрим простейший вариант функции, который позволит пинговать с сервера через telegram бот IP любой адрес в Интернете. Код ниже по тексту.
IPADDR = range(1) def ping(bot, update): update.message.reply_text( ‘Please, enter IP address, that you want to ping.n’ ‘Send /cancel to cancel this command.n’ ) return IPADDR def ipaddr(bot, update): command = «ping -c 4 » + str(update.message.text) output = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output = output.stdout.read().decode(‘utf-8’) output = ‘«’.format(output) update.message.reply_text(output) return ConversationHandler.END def cancel(bot, update): user = update.message.from_user logger.info(«User %s canceled the conversation.», user.first_name) update.message.reply_text(‘You can try this command in another time.’, reply_markup=ReplyKeyboardRemove()) return ConversationHandler.END conv_handler = ConversationHandler( entry_points=[CommandHandler(‘ping’, ping)], states=< IPADDR: [MessageHandler(Filters.text, ipaddr)] >, fallbacks=[CommandHandler(‘cancel’, cancel)] ) dp.add_handler(conv_handler)
Тут также показан функционал исполнения комманд на сервере Linux в telegram боте, что может быть полезно любому системному администратору или программисту при работе с IT системами.
Резюме
В этой статье, познакомил своих читателей с базовым функционалом по созданию ботов в мессенджере Telegram. Зная уже эти возможности, можно приступать к созданию своих ботов. Мне например бот позволяет оперативно выполнять необходимые действия на сервере, что очень удобно. И все вышеописанное лишь малая толика из возможностей telegram ботов. Хочется передать свое вдохновение этим продуктом, всем интересующимя IT. На сегодня все.
Источник: www.andreyus.com
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]