Как создать бота в телеграмме: Как сделать бота в «Телеграме» без навыков программирования

Чат-бот: что это такое | Блог Roistat

Содержание

  • Зачем чат-боты нужны бизнесу
  • Как создать чат-бота в телеграм
  • Примеры чат-ботов

Чат-бот — это программа с искусственным интеллектом, имитирующая диалог с человеком и настроенная на мгновенный ответ на вопрос пользователя через мессенджеры, сайты, телефон или мобильное приложение.

Пример чат-бота

Эти программы можно настраивать и использовать по-разному. Большинство из нас знакомы с чат-ботами для бизнеса, а также с популярными мессенджерами: Telegram, Facebook Messenger, WhatsApp. Чат-бот может помочь решить проблемы, которые часто встречаются у пользователей. Также чат-боты умеют собирать контакты пользователей и могут делиться с ними бесплатными материалами.

Хотите освоить сквозную аналитику?

Посетите регулярный мастер-класс по аналитике от Roistat.

Подключиться

Преимуществом чат-ботов является возможность мгновенно ответить на вопрос пользователя. Это позволяет освободить сотрудников поддержки от рутинных задач и глубже вникать в вопросы клиентов, требующих не только информационной поддержки, но и навыков эмоционального интеллекта.

Также рассказали, что такое виджет.

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

Пример: косметическая компания может создать бота, который задаёт пользователям вопросы об их предпочтениях в макияже, а затем рекомендует продукты, соответствующие их ответам.

Одним из первых примеров чат-бота была программа ELIZA, которая имитировала общение с психотерапевтом. Ее создал профессор Массачусетского технологического института Джозеф Вайценбаум в середине 1960-х годов. Используя ключевые слова, ELIZA отвечала на типовые вопросы пользователя простыми открытыми ответами в соответствии с прописанным сценарием.

С годами разработчики добавили более сложные настройки, которые позволяют чат-ботам лучше понимать вопросы пользователей и давать полезные ответы. Хотя современные боты по-прежнему не могут обрабатывать все запросы клиентов, они могут отвечать на часто задаваемые вопросы или выполнять простые задачи — например, отправлять ссылку на гайд компании.

Зачем чат-боты нужны бизнесу

В 2020 году американская компания Salesforce провела исследование, в котором приняло участие 15 000 человек. Опрос показал, что 83% клиентов ожидают взаимодействия с кем-либо из сотрудников сразу после обращения в компанию. А 82% ждут решения своей проблемы от одного специалиста. Но на практике операторам службы поддержки не всегда легко предоставить качественные услуги и скорость одновременно. Большинство (53%) клиентов говорят, что, по их мнению, отдел продаж, обслуживания и маркетинга не обменивается информацией. В такой ситуации клиентам приходится по несколько раз повторять свой запрос разным специалистам, что может негативно повлиять на их лояльность к компании.

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

1. Чат-боты доступны круглосуточно и без выходных

Чат-боты могут работать 24 часа в сутки, 7 дней в неделю. Кроме того, если бот не может понять запрос и дать ответ, он может передать вопрос специалисту службы поддержки.

Согласно исследованию SuperOffice, 88% клиентов ожидают ответа от компании в течение 60 минут, а 30% ожидают ответа в течение 15 минут или меньше. Опрос также показал, что способность быстро отвечать клиентам является наиболее важным критерием хорошего качества обслуживания клиентов. В современном мире, где клиенты ждут быстрых или даже мгновенных ответов от компаний, расположенной даже на другой стороне земного шара, чат-боты становятся незаменимы

2. Клиенты охотно общаются с чат-ботами

Опрос, проведённый MobileMarketer, показал, что миллениалы чаще предпочитают общаться с чат-ботом, а не с сотрудником-человеком. Особенно когда они проверяют статус своего заказа или ищут информацию о продукте. В основном это связано с тем, что им нужны быстрые и точные ответы. Более того, им удобнее задать вопрос чат-боту, поскольку они уверены, что бот их не осудит, даже если вопрос будет глупым или наивным. Таким образом, чат-бот для бизнеса станет надёжным «собеседником» и позволит больше общаться с вашими клиентами.

3. Чат-боты для бизнеса могут обслуживать несколько клиентов одновременно

Обычный сотрудник может одновременно обрабатывать от 3 до 4 простых запросов клиентов. Однако чат-боты могут обрабатывать столько запросов, сколько вам нужно. Автоматизируя ответы на большинство запросов, чат-боты значительно освобождают время специалистов, позволяя им сосредоточиться на более нетиповых задачах.

4. Чат-боты могут собирать и анализировать данные

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

5. Чат-боты для бизнеса помогают персонализировать общение с клиентами

Как сказано выше, чат-боты могут собирать данные, анализируя запросы пользователей. На основе этого можно адаптировать беседы с пользователями в зависимости от множества факторов, таких как их запрос, манера речи и других. Классические чат-боты могут, например, использовать имя клиента в разговоре. Более сложные — максимально персонализировать разговор. Это делает общение более естественным и интересным для клиента.

6. Чат-боты могут говорить на нескольких языках

Среднестатистический человек, живущий в Европе, может говорить на двух языках. Но найти клиента службы поддержки, владеющего несколькими языками, может быть сложно или дорого. Если компания развивается на международном уровне, то чат-бот поможет обеспечить ответы на вопросы на разных языках. Программа может в начале разговора напрямую спрашивать, на каком языке говорит клиент, или определять автоматически, впоследствии перестраивая диалог на нужный язык.

7. Чат-боты могут автоматизировать процессы общения с пользователем

Чат-боты — не просто программа для ответов на вопросы. Чат-бот может автоматизировать повторяющиеся и рутинные задачи, такие как отправка электронных писем потенциальным клиентам, ответы на часто задаваемые вопросы и многое другое. Боты удобны для покупок в интернете: встроенные на сайт, они могут напрямую обрабатывать платежи. Чат-боты также могут оказаться весьма полезными для HR-команд, помогая сотрудникам справляться с ежедневными задачами, такими как предоставление ежегодных отпусков или больничных листов..

8. Чат-бот для бизнеса поддерживают различные мессенджеры

Создать чат-бота можно на многих платформах: во ВКонтакте, чат-бот Telegram, бот в WhatsApp, Facebook Messenger и других. Поскольку клиенты могут выбирать для себя разные мессенджеры и способы взаимодействия с компанией, важно задействовать больше каналов коммуникации, чтобы привлечь больше клиентов.

Как создать чат-бота в телеграм

Чтобы создать чат-бот телеграмм, навыки программирования не требуются. Гораздо важнее настроить верную триггерную цепочку, которая сделает общение бота с клиентом более человечным.

5 шагов, чтобы создать чат-бот телеграмм:

  1. Создание чат-бота начинается в Telegram. Для этого зайдите в свой аккаунт и введите в поиске @BotFather.
  2. Введите в запросе команду /start. Вы увидите список команд, которые нужны для создания, настройки и редактирования бота. Вам нужно самое первое: Create a new bot.
  3. Отправьте боту команду /newbot. Бот спросит, как вы хотите его назвать.
  4. Придумайте имя бота и введите название на английском языке. Если бот с таким никнеймом уже существует, то BotFather предложит выбрать новый.
  5. Когда имя подойдёт, бот пришлёт ссылку на вашего бота и токен API. Последнее очень важно: эти данные понадобятся для дальнейшей настройки бота.

Пример подбора имени для бота в Telegram

Настроить бота можно как через Telegram, так и через сторонние сервисы: например, BotMother, Unisender, SendPulse.

Примеры чат-ботов

Чат-бот Telegtam. Бот Геннадий от сервиса SMM Planner. Поможет найти подходящие хештеги по фото или по ключевому слову, а также придумать идею для нового поста.

Пример чат-бота в Telegram от SMM Planner

Чат-бот ВКонтакте. Чат-бот «Время истории» называет все памятные события, которые случились в этот день. Достаточно просто ввести дату в формате 01.01.

Пример чат-бота во ВКонтакте — «Время истории»

Чат-бот WhatsApp. Чат бот поддержки от компании TextBack.

Пример чат-бота в WhatsApp от TextBack

Чат-бот Facebook Messenger. Joke Bot присылает вам хорошие шутки в любое время. Чтобы вы больше смеялись.

Пример чат-бота в Facebook — Joke Bot

Создаем бота для Telegram

В рамках данной статьи я расскажу о том, как быстро и легко написать программу-бота для популярного мессенджера Telegram. Писать бота мы будем на языке Python, параллельно изучая его основы. Договоримся, что вы используете Linux в качестве операционной системы, либо знаете как выполнить аналоги команд в Windows.

Установка необходимых библиотек

Нам понадобятся следующие библиотеки и программы:

  • pip — менеджер пакетов для Python
  • python — интерпретатор языка
  • virtualenv — виртуальное окружение
  • telebot — обертка над telegram API для языка Python

Теперь откроем консоль и наберем несколько команд. Первым делом загрузим менеджер пакетов для питона и виртуальное окружение, внутри которого мы будем устанавливать все остальные пакеты, чтобы не засорять систему и не порождать конфликтов с другими проектами. Также скачаем проект telebot, который носит название pyTelegramBotAPI.

sudo apt-get install python-pip
sudo pip install pyTelegramBotAPI
sudo pip install virtualenv

Следующая команда создаст в вашей директории новую директорию venv, в которой будет хранить все локальные библиотеки. Подробности про виртуальные окружения можно прочитать по адресу: http://docs.python-guide.org/en/latest/dev/virtualenvs/ Можно работать и без виртуального окружения, но тогда убедитесь, что устанавливаемые вами библиотеки не конфликтуют с другими библиотеками в системе (например, могут сломаться некоторые программы, заточенные под старые версии пакетов).

virtualenv venv

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

source venv/bin/activate

Создание Telegram-бота

Начнем с создания простого бота для Telegram. Чтобы наш бот функционировал, нужно первым делом его создать. Для этого в телеграме есть специальный мета-бот BotFather (@BotFather). Добавьте его через поиск в вашем клиенте телеграмма. Список его команд можно получить, написав в чате с ним команду /help. Для создания нового бота нужно написать команду /newbot и в следующем сообщении передать название бота (должно заканчиваться словом bot). В ответ вам придет сообщение с API токеном — он понадобится нам для создания соединения с телеграммом.

Создайте файл simplebot.py со следующим содержанием:

# -*- coding: utf-8 -*-
import telebot
bot = telebot.TeleBot("")
@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
msg = bot.send_message(message.chat.id, 'Привет! Я codex_bot!')
@bot.message_handler(commands=['auth'])
def send_auth(message):
pass
bot.polling()

Код довольно интуитивен, поясним только основные идеи. Когда пользователь будет вводить команды /start и /help — выполнится функция send_welcome, которая отправит пользователю в чат сообщение с приветствием. При вводе /auth пока ничего происходить не будет.

Запустите бота командой:

python simplebot.py

Теперь вы можете добавить своего бота в чат телеграмм и пообщаться с ним. Много полезных функций можно найти в документации telegram. Например, если вы хотите изменить описание, которое будут видеть пользователи при добавлении вашего бота в чат, вы можете написать @botfather следующую команду:

/setdescription

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

/setcommands

Выберите бота из списка и в следующем письме введите перечень команд в формате:

команда1 - Описание команды
команда2 - Еще одно описание команды

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

Создать бота Telegram с помощью Python

904 79

из из телеграмма. обновление импорт Обновление

из telegram.ext.callbackcontext импорт CallbackContext

из telegram.ext.commandhandler импорт CommandHand лер

из telegram.ext.messagehandler импорт MessageHandler

из telegram.ext.filters импорт фильтры

   

средство обновления = Updater( "ваш_собственный_API_Token получен от BotFather" ,

                   use_context = 9 0008 Верно )

   

   

def start(update: Update, context: CallbackContext): 9 0008

     update. message.reply_text(

         "Здравствуйте, сэр. , Добро пожаловать в бота. Пожалуйста, напишите \

         / help , чтобы увидеть доступные команды.")

   

по умолчанию help (обновление: обновление, контекст: CallbackContext):

     update.message.reply_text(

     900 08

    

    

     )

 

   

def gmail_url (обновление: обновление, контекст: CallbackContext):

     9 0007 update.message.reply_text(

         "Ваша ссылка на gmail здесь (я , а не \

         90 007 даю мой один для из соображений безопасности)")

   

   

DEF YouTube_URL (обновление: обновление, контекст: CallbackContext):

Обновление0008

     https: / / www. youtube.com / ") 900 15

def linkedIn_url(update: Update, context : CallbackContext):

     update.message.reply_text(

         "LinkedIn URL = > \

         https: / / www.linkedin.com / в / dwaipayan - бандиопадхьяй - 007а / ")

def geeks_url (обновление: обновление, контекст: CallbackContext):

900 07      update.message.reply_text(

def неизвестно (обновление: обновление, контекст: CallbackContext):

     9000 8 update. message.reply_text(

         "Извините, '%s' не является действительная команда" % update.message.text)

   

   

def 900 08 unknown_text (обновление: обновление, контекст: CallbackContext):

     update.message.reply_text(

         "Извините, я вас не узнаю, вы сказали "%s"" % обновление.сообщение.текст)

   

   

updater.dispatcher.add_handler(CommandHandler( 'start' , start))

updater.dispatcher .add_handler(CommandHandler( 'youtube' , youtube_url))

updater.dispatcher.add_handler(CommandHandler( 'помощь' , справка ))

900 07 updater. dispatcher.add_handler(CommandHandler( 'linkedin' , linkedIn_url))

updater.dispatcher.add_handler(CommandHandler( 'gmail' , gmail_url))

updater.dispatcher.add_handler(CommandH andler( 'вундеркинды' , geeks_url))

updater.dispatcher.add_handler(MessageHandler(Filters.text, unknown))

updater.dispatcher.add_handler(MessageHandler(

     9 0008 Filters.command, неизвестно))

updater.dispatcher.add_handler(MessageHandler(Filters.text, unknown_text))

   

updater.start_polling()

Создать Telegram Bot - Code Capsules

В этом руководстве используется Python. Вы можете найти версию NodeJS здесь.

В предыдущем руководстве мы создали и разместили API в Code Capsules. В этом руководстве мы создадим клиент для этого API в виде бота Telegram. Это позволит нам получать данные о температуре, погоде и обменном курсе на ходу, отправляя сообщения нашему боту в приложении Telegram.

Мы также узнаем, как разместить этого бота в Code Capsules, чтобы его могли использовать другие. Попутно мы изучим некоторые ключевые концепции безопасного и эффективного размещения ботов.

Начнем!

Требования

Для создания Telegram-бота нам понадобится:

  • Python 3.6+ установлен.
  • Учетная запись GitHub и Git установлены.
  • Virtualenv установлен.
  • Аккаунт Telegram.
  • Аккаунт Code Capsules.
  • API в Code Capsules, созданный с помощью руководства по Personal API.

О ботах Telegram

Боты Telegram отображаются как контакты в интерфейсе Telegram. Пользователи взаимодействуют с ботами Telegram, отправляя им сообщения с командами — это слова, которым предшествует косая черта, например. /погода или /валюта . Команды, отправленные на учетную запись бота в Telegram, будут переданы в бэкэнд-код бота (в нашем случае это будет код, который мы размещаем на Code Capsules).

Например, когда мы отправим команду /weather нашему боту позже в этой статье, бот ответит данными о погоде из нашего личного API.

Давайте создадим Telegram-бота.

Регистрация учетной записи бота и общение с BotFather

Чтобы создать Telegram-бота, нам нужно скачать Telegram и создать учетную запись пользователя. Вы можете использовать Telegram со своего ПК или телефона, или с того и другого.

Если у вас есть учетная запись Telegram, вы можете зарегистрировать нового бота, отправив сообщение BotFather, боту, которым управляет сама Telegram. Найдите «BotFather» и начните чат. В интерфейсе чата выполните следующие действия:

  1. Нажать "старт".
  2. Тип /newbot .
  3. Выберите имя для своего бота.
  4. Выберите имя пользователя для своего бота (должно заканчиваться на «бот»).

После того, как вы выбрали имя пользователя, BotFather ответит токен авторизации . Это строка, которая позволяет вашему боту отправлять запросы к Telegram Bot API, аналогично токенам авторизации, которые мы использовали для получения данных о погоде и обменном курсе в личном руководстве по API. Обязательно сохраните этот токен в безопасном и уединенном месте.

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

Планирование и настройка

Мы собираемся реализовать две команды для нашего бота.

  • Когда мы отправим команду /weather , наш бот ответит данными о погоде из созданного нами API.
  • Когда мы отправим команду /currency , наш бот ответит обменными курсами из долларов США в канадские доллары, евро и ZAR.

Создание виртуальной среды и установка требований

Сначала нам нужно создать локальный каталог. Дайте ему то же имя, что и нашему боту. Затем из этого каталога откройте терминал и создайте виртуальную среду Python, введя следующую команду:

 виртуальная среда окружения
 

Войдите в виртуальную среду, используя соответствующую команду для вашей системы:

  • Linux/MacOSX : источник env/bin/активировать
  • Windows : env\Scripts\activate.bat

Виртуальная среда поможет управлять нашими зависимостями, когда мы размещаем бота на Code Capsules.

Для взаимодействия с Telegram Bot API нам необходимо установить библиотеку python-telegram-bot, оболочку Python для Telegram Bot API. Мы также будем использовать библиотеку Python 9.0007 запрашивает для получения данных из API погоды и курса валют. Чтобы установить эти требования, введите в своем терминале следующее:

 pip устанавливает запросы python-telegram-bot
 

Получение данных из API

Теперь мы можем начать программировать. Создайте файл с именем bot.py в том же каталоге, где мы активировали виртуальную среду. В этом файле введите следующий код, заменив YOUR-URL-HERE URL-адресом, указывающим на API погоды и обменного курса, размещенный на Code Capsules.

 запросов на импорт
url = 'ВАШ-URL-ЗДЕСЬ/ПОЛУЧИТЬ'
data = request.get(url) # запрашивает данные из API
data = data.json() # преобразует возвращаемые данные в json
# Получить значения из API
curr_temp = данные['curr_temp']
cad_rate = данные['USD_rates']['CAD']
eur_rate = данные['usd_rates']['EUR']
zar_rate = данные['usd_rates']['ZAR']
защита return_weather():
    print('Здравствуйте. Текущая температура в Кейптауне: '+str(curr_temp)+" по Цельсию.")
деф return_rates():
    print("Здравствуйте. На сегодняшний день курсы конвертации долларов США следующие: USD->CAD = "+str(cad_rate)+
    ", USD->EUR = "+str(eur_rate)+", USD->ZAR = "+str(zar_rate))
return_weather()
return_rates()
 

Здесь мы запрашиваем данные о валюте и погоде из API и анализируем температуру и курсы конвертации. Затем мы распечатываем данные, используя return_weather() и return_rates() .

Попробуйте! Запустите программу, чтобы убедиться, что все работает, затем продолжите.

Создание бота

Теперь мы можем приступить к созданию настоящего бота. В верхней части файла bot.py добавьте следующую строку:

 из telegram.ext import Updater, CommandHandler
 

Из библиотеки python-telegram-bot импортируем два класса: Updater и CommandHandler . Мы скоро поговорим об этих классах.

Нам больше не нужно печатать наши данные — вместо этого мы вернем строку нашему боту, чтобы бот мог отобразить ее в Telegram. Замените def return_weather() и def return_rates() следующим:

 по определению return_weather():
    вернуться 'Здравствуйте. Текущая температура в Кейптауне: '+str(curr_temp)+" по Цельсию."
деф return_rates():
    return "Здравствуйте.  На сегодняшний день курсы конвертации долларов США следующие: USD->CAD = "+str(cad_rate)+", USD->EUR = "+str(eur_rate)+", USD->ZAR = "+str( зар_рейт)
 

Теперь замените вызовы функций return_weather() и return_rates() кодом ниже:

 по умолчанию main():
    ТОКЕН = "ВАШ-БОТ-ТОКЕН-ЗДЕСЬ"
    updater = Updater (токен = ТОКЕН, use_context = True)
    диспетчер = updater.dispatcher
    weather_handler = CommandHandler("погода", погода)
    currency_handler = CommandHandler("валюта", валюта)
    start_handler = CommandHandler("старт", старт)
    диспетчер.добавить_обработчик(погода_обработчик)
    диспетчер.добавить_обработчик(currency_handler)
    диспетчер .add_handler (start_handler)
    updater.start_polling()
если __name__ == '__main__':
    основной()
 

В верхней части нашего нового основного метода , который будет вызываться при запуске этого файла, мы создаем экземпляр updater , экземпляр класса Updater библиотеки Telegram. Этот объект будет извлекать команды, отправленные нашему боту, и передавать их экземпляру класса Dispatcher . Мы назначили этот экземпляр Dispatcher переменной диспетчера для дальнейшего использования.

Далее мы создаем три разных CommandHandler классов, по одному на каждую команду, которую можно отправить нашему боту: /start , /weather и /currency . В каждый экземпляр мы передаем два аргумента: текст команды (без предшествующих /) и вызываемую функцию. Например, когда пользователь вводит команду /weather , будет вызвана функция weather() .

Давайте определим эту функцию и две другие. Чуть выше def main() введите следующие три определения функций.

 по определению погоды (обновление, контекст):
    context.bot.send_message(chat_id=update.efficient_chat.id, text=return_weather())
деф валюта (обновление, контекст):
    context. bot.send_message(chat_id=update.efficient_chat.id, text=return_rates())
def start (обновление, контекст):
    context.bot.send_message(chat_id=update.efficient_chat.id, text="Привет! Я отвечаю на /weather и /currency. Попробуйте!")
 

Каждая из этих функций вызывает функцию python-telegram-bot send_message() с идентификатором текущего чата и соответствующим текстом, либо возвращенным из одной из наших других функций, либо заданным в виде строки. Аргументы update и context предоставляются диспетчером автоматически.

Вернувшись в нашу функцию main() , мы используем dispatch.add_handler , чтобы добавить все три обработчика в наш диспетчер.

Наконец, updater.start_polling() начнет опрос на наличие обновлений от Telegram. Это означает, что наш код будет регулярно спрашивать серверы Telegram, были ли ему отправлены какие-либо команды. При получении команды будет вызван соответствующий обработчик. В следующем разделе мы обсудим подводные камни опроса и рассмотрим альтернативу.

Файл кода bot.py теперь должен выглядеть так, как показано ниже. Еще раз обязательно замените YOUR-URL-HERE URL-адресом API, который вы создали в руководстве по API.

 из telegram.ext import Updater, CommandHandler
запросы на импорт
url = 'ВАШ-URL-ЗДЕСЬ/ПОЛУЧИТЬ'
data = request.get(url) # запрашивает данные из API
data = data.json() # преобразует возвращаемые данные в json
# Получить значения из API
curr_temp = данные['curr_temp']
cad_rate = данные['USD_rates']['CAD']
eur_rate = данные['usd_rates']['EUR']
zar_rate = данные['usd_rates']['ZAR']
защита return_weather():
    возвращение'Здравствуйте. Текущая температура в Кейптауне: '+str(curr_temp)+" по Цельсию."
деф return_rates():
    return "Здравствуйте. На сегодняшний день курсы конвертации долларов США следующие: USD->CAD = "+str(cad_rate)+ ", USD->EUR = "+str(eur_rate)+", USD->ZAR = "+str( зар_рейт)
Def погода (обновление, контекст):
    context. bot.send_message(chat_id=update.efficient_chat.id, text=return_weather())
деф валюта (обновление, контекст):
    context.bot.send_message(chat_id=update.efficient_chat.id, text=return_rates())
def start (обновление, контекст):
    context.bot.send_message(chat_id=update.efficient_chat.id, text='Привет! Я отвечаю на /weather и /currency. Попробуйте это!')
деф основной():
    ТОКЕН = "ВАШ-БОТ-ТОКЕН-ЗДЕСЬ"
    updater = Updater (токен = ТОКЕН, use_context = True)
    диспетчер = updater.dispatcher
    Weather_handler = CommandHandler('погода', погода)
    currency_handler = CommandHandler('валюта',валюта)
    start_handler = CommandHandler('старт',старт)
    диспетчер.добавить_обработчик(погода_обработчик)
    диспетчер.добавить_обработчик(currency_handler)
    диспетчер .add_handler (start_handler)
    updater.start_polling()
если __name__ == '__main__':
    основной()
 

Ниже приведен разговор с ботом, созданным с помощью этой программы. Запустите bot.py и попробуйте сами.

Мы не сможем отправлять сообщения нашему боту, если эта программа не запущена, поэтому ее размещение на Code Capsules позволит нам взаимодействовать с ботом без необходимости постоянно поддерживать этот код на нашем ПК для разработки.

Хотя мы могли бы развернуть нашего бота в Code Capsules в его текущем состоянии, у нашей текущей реализации есть недостаток, который мы должны исправить в первую очередь.

Опрос против веб-перехватчиков

Наш файл bot.py может получать команды, отправленные ему в Telegram, двумя способами. В настоящее время код постоянно опрашивает Telegram, независимо от того, используется ли бот. Если бы мы разместили эту текущую версию на Code Capsules, мы бы потратили впустую пропускную способность, поскольку подавляющее большинство опросов ничего не дали бы.

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

Мы настроим веб-перехватчик, сказав Telegram отправлять команды, отправленные на нашу учетную запись бота, на URL-адрес кодовых капсул нашего бота. Затем наш диспетчер обработает команду с помощью соответствующего обработчика и отправит обратно запрошенную информацию.

Создание веб-перехватчика

Чтобы настроить веб-перехватчик, замените строку updater.start_polling() в основной функции кодом ниже:

 ПОРТ = int(os.environ.get('ПОРТ', '443'))
    HOOK_URL = 'ВАШ-КОДЕКАПСУЛЫ-URL-ЗДЕСЬ' + '/' + ТОКЕН
    updater.start_webhook(listen='0.0.0.0', port=PORT, url_path=TOKEN, webhook_url=HOOK_URL)
    updater.idle()
 

Здесь мы запускаем веб-перехватчик, который будет прослушивать наш URL-адрес Code Capsules через TCP-порт 443 и путь к нашему токену. Таким образом, Telegram будет ретранслировать команды, отправленные нашему боту, на следующий URL:

.

 https://YOUR-CODECAPSULES-SUBDOMAIN.codecapsules.io:443/TOKEN
 

Если вы выполнили некоторые из наших других руководств по серверной части, вы будете знакомы с настройкой веб-серверов, которые получают запросы GET и POST по разным маршрутам. Вы можете думать о веб-хуке как об очень простом HTTP-сервере, предназначенном для использования ботами и автоматизированными службами, а не людьми.

Подготовка к развертыванию

Прежде чем отправить наш код на GitHub и развернуть его на Code Capsules, нам нужно внести одно небольшое изменение в код и создать несколько файлов.

Создание переменной среды ключа API

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

Заменить эту строку

 TOKEN = "ВАШ-БОТ-ТОКЕН-ЗДЕСЬ"
 

с ниже

 импорт ОС
ТОКЕН = os.getenv('BOTAPIKEY')
 

os.getenv('BOTAPIKEY') будет искать переменную среды с именем "BOTAPIKEY". Когда мы размещаем нашего бота в Code Capsules, мы устанавливаем для этой переменной среды ключ, который мы получили от BotFather.

После этого нам нужно создать несколько файлов, прежде чем мы сможем отправить наш код на GitHub и развернуть его на Code Capsules.

Создание файла Procfile и требования.txt

Code Capsules требует пару файлов для развертывания нашего приложения: Procfile и requirements.txt . Первый сообщает Code Capsules, как запускать наше приложение, а второй сообщает ему, какие библиотеки ему нужно установить.

Для создания Procfile :

  1. Перейдите в каталог, содержащий файл bot.py , и войдите в виртуальную среду.
  2. Создайте файл с именем Procfile (без расширения файла).
  3. Откройте Procfile , введите web: python3 bot.py и сохраните файл.

В том же каталоге откройте терминал и активируйте виртуальную среду. Затем введите pip3 freeze > requirements.txt , чтобы создать список требований для нашего сервера Code Capsules.

Теперь мы можем отправить наш код на GitHub. Создайте репозиторий GitHub и отправьте в репозиторий файлы requirements. txt , Procfile и bot.py .

Развертывание бота для кодирования капсул

Со всеми файлами, отправленными на GitHub, давайте развернем бота в Code Capsules:

  1. Войдите в Code Capsules и при необходимости создайте команду и пространство.
  2. Свяжите кодовые капсулы с ранее созданным репозиторием GitHub.
  3. Введите место для кодовых капсул.
  4. Создайте новую капсулу, выбрав тип капсулы "Backend".
  5. Выберите репозиторий GitHub, содержащий бота, — оставьте поле «Подпуть репо» пустым и нажмите «Далее».
  6. Оставьте поле «Выполнить команду» пустым и нажмите «Создать капсулу».

Мы еще не предоставили нашему веб-перехватчику URL-адрес, и нам все еще нужно создать переменную среды для токена авторизации нашего бота. Чтобы создать переменную среды:

  1. Перейдите к своей капсуле.
  2. Перейдите на вкладку «Конфигурация».
  3. Добавьте переменную среды с именем "BOTAPIKEY" и присвойте ей ключ API вашего бота в качестве значения. Обязательно нажмите кнопку «Обновить капсулу» после добавления переменной.

Теперь давайте снабдим наш веб-перехватчик правильным доменом.

  1. Перейдите на вкладку «Обзор».
  2. Скопируйте домен, найденный в разделе «Домены».
  3. Откройте файл bot.py и найдите строку HOOK_URL = 'YOUR-CODECAPSULES-URL-HERE' + '/' + TOKEN .
  4. Замените "YOUR-CODECAPSULES_URL" только что скопированным доменом.
  5. Зафиксируйте и отправьте эти изменения на GitHub.

После внесения этих изменений капсула будет перестроена. Как только это будет сделано, бот готов. Попробуйте!

Дополнительное чтение

Мы рассмотрели многое выше, от создания бота Telegram до различий между веб-перехватчиками и опросами.

Если вам интересно узнать больше о возможностях ботов Telegram, ознакомьтесь с введением разработчика ботов Telegram. Если у вас есть какие-то идеи, но вам требуется более глубокое понимание библиотеки python-telegram-bot , просмотрите их репозиторий GitHub.