В данной статье мы напишем telegram bot на python, который сможет отвечать на наши сообщения, взаимодействовать с нами, предлагая варианты ответов в виде кнопок и обрабатывать выбранный нами результат, выполняя команды на сервере. Взаимодействовать с Telegram Bot Api мы будем с помощью библиотеки pyTelegramBotAPI (telebot) написанной на Python.
- Создание бота
- Установка Python и библиотеки pyTelegramBotAPI
- Пишем Telegram Bot на Python
- Использование прокси в telebot
- Ответы бота на сообщения пользователя
- Клавиатура в Telegram Bot API
- InLine клавиатура
- Конечный листинг
Создание бота
Для регистрации нового бота необходимо обратиться к боту BotFather. Для этого в строке поиска наберите BotFather и в показанных результатах найдите интересующего нас бота:
Обратите внимание на его имя, изображение и знак в виде галочки, говорящий о том, что это действительно отец всех ботов.
Выберите его и в диалоговом окне напишите команду /start и бот в ответном сообщение пришлет список всех доступных команд:
Нас интересует создание нового бота, поэтому выбираем команду /newbot. Команду можно как напечатать самостоятельно, так и выбрать мышью в сообщении и она автоматически отправится:
Первым шагом нам предлагают дать имя новому боту, оно может быть произвольным. Мы назовем его PocketAdmin:
Теперь требуется указать идентификатор бота (username), он должен заканчиваться на _bot и быть уникальным в системе. Мы укажем PocketAdminTech_bot:
На этом создание бота завершено. В последнем сообщении нам пришла ссылка на нашего нового бота t.me/PocketAdminTech_bot и токен (закрашен), необходимый для взаимодействия с API.
Обязательно сохраните токен и храните его в тайне!
Установка Python и библиотеки pyTelegramBotAPI
Скачать Python можно с официального сайта (как установить пакет на Centos 8 можно ознакомиться в данной заметке) и мы не будем заострять внимание на данном вопросе.
Чтобы установить пакет pyTelegramBotAPI воспользуемся pip:
pip install pytelegrambotapi
На этом подготовительная работа завершена, приступаем непосредственно к написанию нашего бота.
Пишем Telegram Bot на Python
Так как наш бот создается в ознакомительных целях и не будет содержать много кода, то писать я его буду сразу на сервере с установленной Centos 8 используя обычный редактор nano. Создадим файл bot.py, открыв его nano:
nano bot.py
Для начала импортируем библиотеку pyTelegramBotAPI:
import telebot
Затем зададим переменную token равную нашему токену, который мы получили от BotFather для взаимодействия с Telegram Bot Api:
token = ‘ваш token api’
bot = telebot.TeleBot(token)
Далее задается декоратор. Пока наш бот будет обрабатывать только команду start:
и в ответ писать нам “Привет!”:
def start_message(message): bot.send_message(message.chat.id, ‘Привет!’)
Чтобы бот постоянно ожидал запрос от пользователя в конце пропишем:
bot.polling()
В итоге мы получим код:
python bot.py
Затем откроем нашего бота (можно найти по имени) и напишем ему команду /start:
Поздравлю с первыми словами нашего бота PocketAdmin!
Использование прокси в telebot
При запуске скрипта может появиться ошибка следующего вида:
requests.exceptions.ConnectionError: (‘Connection aborted.’, ConnectionResetError(104, ‘Connection reset by peer’))
Чтобы исправить её, можно попробовать подключиться через прокси:
Если при использовании прокси возникают ошибки, подобные: Not supported proxy scheme socks5 или Missing dependencies for SOCKS support, то необходимо установить модули:
pip install requests[socks] PySocks
Ответы бота на сообщения пользователя
Аналогично хэндлерам для команд, в telegram bot api есть возможность обрабатывать сообщения от пользователя. Для этого используется тип text. Например, мы можем запрограммировать бота отвечать на определенные фразы или слова пользователя:
Думаю тут все понятно. На слово “Привет” бот будет отвечать “Ещё раз привет!”, а на “Пока” – “Пока!”. Весь код нашего telegram bot на python теперь будет выглядеть следующим образом:
Перезапустим скрипт и пообщаемся с ботом:
Таким образом мы можем описывать различные диалоги с ботом.
Клавиатура в Telegram Bot на Python
Апи телеграма позволяет использовать свою клавиатуру, а точнее быстрые кнопки, позволяющие пользователю отправлять текст по их нажатию.
Добавим в обработчик команды /start клавиатуру с кнопками “Привет “и “Пока”:
И запустим измененный скрипт. Как только мы отправим боту команду /start у нас внизу появится наша клавиатура:
Теперь для отправки сообщений достаточно лишь нажать на соответствующую кнопку. Это очень удобно в мобильной версии телеграма.
InLine клавиатура
На мой взгляд, наиболее интересной является InLine клавиатура. Она позволяет вместе с сообщением отправлять пользователю интерактивные кнопки, например с вариантами ответов, а после их нажатия обрабатывать результат.
Давайте добавим простой вопрос от бота на команду /test:
Переменная markup объявляет новую переменную с inline keyboard, а markup.add – создает отдельную кнопку. Основные параметры при создании кнопки – text и callback_data: первый отвечает за текст на кнопке, второй – данные, которые будут переданы боту при выборе пользователем определенного варианта ответа.
Запустим скрипт и напишем /test:
Отлично, бот прислал нам варианты ответов. Но при нажатии на кнопку ничего не произойдет, т.к. мы не описали обработку результатов. Исправим это:
bot.answer_callback_quer – это всплывающее окно, которое будет показано пользователю после нажатия кнопки. А в call.data будет передано значение, которое мы указывали при создании клавиатуры в параметре callback_data. Ответим боту, выбрав один из ответов:
Отлично, все работает. Но будет лучше, если после ответа, клавиатура будет исчезать из чата. Это можно сделать добавив в конец функции query_handler следующую строку:
bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id)
Это функция редактирования клавиатуры, вызванная без указания объекта клавиатуры. Теперь после ответа пользователя клавиатура будет убрана ботом:
Конечный листинг телеграм бот на питоне
Что такое боты в Телеграме
197110, Россия, Санкт-Петербург, а/я 144, ООО «Юми» +7 (812) 309-68-23
О мессенджере Телеграм вы, наверняка, уже слышали или даже пользуетесь. А вот, что за боты там обитают, вам может быть не совсем понятно. Постараемся осветить этот вопрос простым и доступным для неискушенных пользователей языком.
Боты в Telegram — программные «роботы», которые взаимодействуют с живыми людьми и выполняют заложенные в них функции. Например, сообщают прогноз погоды, курс валюты, ищут информацию через поисковые системы или рассказывают анекдоты.
Условная классификация ботов в Телеграме
Все боты в этом мессенджере могут быть условно разделены на 5 категорий:
Перед ними стоит задача информировать своих подписчиков о каких-либо событиях, мероприятиях, новых публикациях и т. д.
Разрабатываются с целью вспомогательной помощи по шаблонным вопросам. Например, чтобы менеджер не отвечал по 100 раз на одни и те же вопросы, заданные разными людьми, создается бот-ассистент, который консультирует по данным тематикам.
В основном создаются, чтобы имитировать живое общение. Допустим, кому-то скучно, и он хочет с кем-нибудь пообщаться, «убить» время. Этот человек может написать боту «Привет», спросить, как у него дела и всё в таком роде. Программа будет отвечать ему, как живой собеседник. Конечно, при условии, что эти вопросы предусмотрены разработчиком. В противном случае, бот ответит что-то вроде «Извините, я вас не понял».
Бизнес использует таких ботов, чтобы автоматизировать взаимодействие с клиентами по типовым вопросам и снизить нагрузку на сотрудников. Об этом расскажем ниже.
Смысл таких ботов можно понять из названия. Это «роботы», которые дают пользователям возможность сыграть в одну или несколько игр.
Сочетают в себе множество различных функций. Могут информировать пользователей, отвечать на их вопросы, вести диалог и многое другое. Подобных ботов нечасто можно встретить, так как их не так просто создать и отладить.
Как взаимодействовать с ботами в Телеграме
После этого кликаем по найденному результату и жмем на кнопку «Запустить» в чате.
Сразу после этого бот начнет свою работу и предложит вам выполнить целевое действие: задать вопрос, выбрать нужный пункт меню, написать определенное слово и т. д.
В нашем случае, мы должны кликнуть по одному из трех пунктов меню, чтобы узнать биржевой курс доллара, евро или нефти Brent.
После нажатия на кнопку бот пришлет соответствующую информацию прямо в чат.
Меню есть у многих ботов, так как это самый удобный вариант для пользователей. Однако встречаются такие «роботы», взаимодействие с которыми немного сложнее, так как нет визуального меню. Чтобы пользоваться ботом, нужно вводить определенные команды. Чтобы узнать их полный список, наберите в чате значок слеша /.
Когда появится список команд, кликните по любой из них левой кнопкой мыши или введите вручную через чат и отправьте нажатием Enter. Таким образом, вы начнете взаимодействовать с ботом, и он выполнит те функции, которые соответствуют командам.
Существует несколько стандартных команд, которыми можно пользоваться почти везде:
- /start — запускает бота.
- /settings — открывает настройки бота.
- /help — активирует инструкцию по использованию бота.
Нередки случаи, когда бот вообще не откликается ни на какие команды. Это означает, что он не работает по причине ошибки в коде, на стороне сервера или его просто забросили.
Можно ли найти применение Телеграм-ботам в бизнесе
Боты в Телеграме постепенно переходят в высшую лигу и становятся частью электронной коммерции. Уже сейчас есть сервисы, которые позволяют создавать ботов, выполняющих функции интернет-магазина или консультанта.
С помощью такого бота вы можете завоевать большую часть мобильной аудитории. Согласитесь, что гораздо удобнее и быстрее заказать товар или услугу через мессенджер, кликнув по нескольким кнопкам в меню, чем бродить по сайту и заполнять формы.
Таким образом, вы можете оставить всего одного консультанта, снизив нагрузку и сэкономив при помощи «робота», созданного для Телеграма.
Где находить готовых ботов для Телеграма
Существует множество каталогов, в которых опубликованы ссылки и краткие описания ботов для Телеграма. Рассмотрим некоторые из них.
Сборник ботов, которые рассортированы по категориям.
Каталог «роботов» по категориям и с функцией поиска.
Единый список ботов.