Telegram боты и их создание

12/01/2019

bot

Продукт Павла Дурова при ближайшем рассмотрении вызывает все больше восхищения. Начинаешь понимать, почему TELEGRAM пользуется такой сумасшедшей популярностью по всему миру. В целом продукт создает воркуг себя целую экосистему. С помощью различных его функций можно решать огромное количество бизнес задач и задач из личной жизни. Особенно четко это видно, когда Вы начинаете создавать своих Telegram ботов. Мне, откровенно, не совсем понятно, зачем власти России воют с продуктом, который является одним из самых революционных в мире.

Telegram боты — фишка, дающая возможность автоматизировать различные процессы, с помощью мессенджера Дурова. Любой желающий может создать себе бота, ознакомиться с API и напрограмиировать все, что душе угодно. Возможности, лично меня, поражают. Я в этой статье покажу основные вещи, которые может использовать каждый. Для этих целей мы будем использовать язык программирования Python и соответствующие библиотеки для работы с Telegram — python-telegram-bot.

Для начала несколько слов как создавать бот в системе Telegram. Тут все очень просто и легко. Находим в мессенджере бота @BotFather. С помощью него происходит основное управление всеми ботами в Telegram. Далее вводим команду /newbot, после чего на вопросы имени и псевдонима, вводим их для создания бота. При успешном создании бота, Вы получите его токен, который и будет служить идентификатором при работе с ботом. Также Вы сможете устанавливать фотографию для бота, его описание, менять характеристики и удалять. @BotFather — самый могущественный бот в Telegram.

Программируем на 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 = '`{0}`'.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. На сегодня все.

Добавить комментарий

Ваш адрес email не будет опубликован.