На чем написать бота для Telegram

Боты для телеграмма сейчас весьма популярны, давайте и мы научимся делать своих.

ЯП который мы будем использовать, как всегда Python. Напишем простого бота, который по заданной команде будет присылать нам котиков, а еще добавим кнопку, чтобы не вводить команды каждый раз. Вот рабочий пример (надеюсь к моменту твоего прочтения, я его еще буду хостить).
И итог того, что должно получиться:

Скриншот чата с ботом

Подготовка

Для начала мы будем исходить из того, что Python3 уже установлен и из командной строки прекрасно работает >_ python и >_ pip. Сидим мы из под Linux или Windows неважно.
Для работы с телеграмом будем использовать эту библиотеку, для установки необходима командная строка с правами администратора.
И ввод одной команды.

pip install python-telegram-bot —upgrade

pip install requests

Чат с BotFather

Уроки C# – Создаём Telegram бота

Не забудем и про добавление команды

Чат с BotFather

Пишем код

В принципе, многое уже и так есть в примерах в репозитории и заново ничего придумывать не надо, мы лишь изменим и дополним то, что уже есть.
И так поехали, берем из примеров простого бота echobot2, который уже умеет отвечать на все сообщения и знает команды /help /start. Отвечалку на все сообщения мы изменим, команды тоже немного поменяем и добавим свою /cat, которая собственно и будет постить котиков :3.
Для начала подставляем ранее полученный токен, необходимый для работы.

Код инициализации бота

Смотрим дальше и видим, что все обработчики в боте (команды, текст и тд) находятся в функции main и добавляются как dp.add_handler
Как вы можете заметить, событие использования команды в чате состоит из двух частей: текст команд и функции, которая вызывается при ее использовании.

По тому же принципу добавим свою команду строкой
dp.add_handler(CommandHandler(«cat», sendcat)), где cat — это команда , sendcat — вызываемая функция при получение данной команды.

Код инициализации бота

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

Код отправки сообщения в Telegram

Изменим отправляемый текст на сообщение об ошибке

Код отправки сообщения в Telegram

Также изменим отправляемый текст на /start и /help

Украшательства закончены. Приступим к котикам :).
Котики у нас будут состоять из двух функций. Первую вы уже видели в хендлере — sendcat, она будет отвечать за отправку, но встает вопрос, а что же нам собственно отправлять? Тут мы будем использовать вторую функцию getcat которая будет отвечает за предоставление ссылок на картинки с котиками, брать которые мы будет с сайта thecatapi. Его апи позволяет получать ссылки на случайные картинки с котами, чем мы и воспользуемся.
Подключаем библиотеку requests и пишим простенькую функцию выдающию ссылки на картинки с котиками. Потом просто вызываем ее в sendcat.

Получения ссылки python requests

Проверим что получилос. Запускаем наш скрипт, ищем в телеграмме бота по нику, который вы задали ему при создании и. Котики .

Скриншот чата с ботом

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

Функция отправки изображения в Telegram

Возвращаемся обратно и в функции sendcat заменяем всю строку отправки сообщения на bot.sendPhoto(chat_id=update.message.chat_id, photo=getcat())

Функция отправки сообщения с картинкой

Скриншот чата с ботом

Почти все готово, осталось сделать кнопку в чате, чтобы не вписывать постоянно команду вручную.
Использовать мы будем Inline клавиатуру (прямо в чате которая), она состоит из двух функций: первая отвечает за отрисовку (markup), вторая за обработку нажатий (callback).
Снова идем в примеры, которые даются авторами библиотеки, вытаскиваем вот это и переделываем под себя.
Кое-что доподключаем:

Подключение библиотек inline keyboard

В итоге получается

Код клавиатуры inline в Telegram

Скриншот чата с ботом

Исходный код

import requests from telegram import InlineKeyboardButton, InlineKeyboardMarkup, ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackQueryHandler import logging # Enable logging logging.basicConfig(format=’%(asctime)s — %(name)s — %(levelname)s — %(message)s’, level=logging.INFO) logger = logging.getLogger(__name__) # Define a few command handlers. These usually take the two arguments bot and # update. Error handlers also receive the raised TelegramError object in error. def start(bot, update): «»»Приветствие»»» update.message.reply_text(‘Привет, я бот, который очень любит котиков :3nНапиши мне /cat и я поделюсь ими с тобой’) def help(bot, update): «»»Сообщение для помощи с командами»»» update.message.reply_text(‘Чтобы получить котика напиши /cat’) def echo(bot, update): «»»На любой текст отвечаем ошибкой»»» update.message.reply_text(«Неизвестная команда :(«) def error(bot, update, error): «»»Log Errors caused by Updates.»»» logger.warning(‘Update «%s» caused error «%s»‘, update, error) def getcat(): »’Получение ссылки на картинку с котиком»’ try: r = requests.get(‘http://thecatapi.com/api/images/get?format=src’) url = r.url except: url = get_cat() print(‘Error with cat parsing’) pass return url def sendcat(bot, update): «»»Отправка котиков»»» bot.sendPhoto(chat_id=update.message.chat_id, photo=getcat(), reply_markup=draw_button()) def draw_button(): keys =[[InlineKeyboardButton(‘?Еще котика. ‘, callback_data=’1’)]] return InlineKeyboardMarkup(inline_keyboard=keys) def get_callback_from_button(bot, update): query = update.callback_query username = update.effective_user.username chat_id = query.message.chat.id message_id = query.message.message_id if int(query.data) == 1: bot.sendPhoto(photo=getcat(), chat_id=chat_id, message_id=message_id, reply_markup=draw_button()) def main(): «»»Start the bot.»»» # Create the EventHandler and pass it your bot’s token. updater = Updater(«СЮДА ВАШ ТОКЕН») # Get the dispatcher to register handlers dp = updater.dispatcher dp.add_handler(CallbackQueryHandler(get_callback_from_button)) dp.add_handler(CommandHandler(«start», start)) dp.add_handler(CommandHandler(«help», help)) dp.add_handler(CommandHandler(«cat», sendcat)) # on noncommand i.e message — echo the message on Telegram dp.add_handler(MessageHandler(Filters.text, echo)) # log all errors dp.add_error_handler(error) # Start the Bot updater.start_polling() # Run the bot until you press Ctrl-C or the process receives SIGINT, # SIGTERM or SIGABRT. This should be used most of the time, since # start_polling() is non-blocking and will stop the bot gracefully. updater.idle() if __name__ == ‘__main__’: main()

Еще по теме:  Почему Телеграм закрывается на компьютере

F.A.Q

  • Q: Т.к бот каждый раз запрашивает картинку, а потом еще и загружает ее в мессенджер, уходит масса времени. Как ускорить выдачу ответов?
  • A: Решение — использовать сервера Telegram, как кеш. Сохраняйте при отправке фото их media_id (куда нибудь в бд), чтобы потом можно было быстренько его оттуда вытянуть и отправить.
  • Q: А как сделать ребут, админку, оформить тексты т.д ?
  • A: Здесь есть отличные сниппеты
  • Q: Как осуществить . ?
  • A: Документация Telegram bot api, Вики библиотеки

Источник: liberbear.com

Как создать чат-бот без навыков программирования: практическая инструкция

Bubble

Как запоминать сотни задач и не сойти с ума: Getting Things Done и Zettelkasten

Leadtex поможет создать бота для телеграма, WhatsApp, «ВКонтакте» и Viber. Конструктор ориентирован на создание бота для онлайн-продаж. Бот умеет автоматически формировать воронки продаж, анализировать рекламные каналы и объявления, принимать оплату и вести базу клиентов. По словам его авторов, функционал обновляют каждую неделю. Семь дней сервисом можно пользоваться бесплатно, затем — от $14 в месяц. Платформа SendPulse ориентирована на создание ботов для маркетинга и продаж в мессенджерах и социальных сетях. В ней есть большая база шаблонов для email-рассылок и чат-ботов с автоответами и автоворонками продаж. Также можно создать web push и sms-оповещения. Создание, редактирование и пользование тремя ботами — бесплатно, дополнительные функции стоят от $11 в месяц. Стоимость зависит от количества пользователей, которые используют бот. Chatbot создает диалоговые чат-боты. Сервис предлагает шаблоны для создания ботов по определенным сферам: маркетинг, продажи, обучение, поддержка клиентов. Боты умеют собирать данные о пользователях и обучаться персонализированному общению. Есть функция приема заказов, также бот может отправлять всю информацию о товаре: начиная с фото предмета и заканчивая описанием его характеристик. Протестировать бота можно в интерфейсе конструктора. Стоимость — от $42 в месяц. Полезно будет заглянуть в базы данных ботов, чтобы не тратить время на создание того, что уже существует. К примеру, сервис BotoStore поможет найти потенциальных конкурентов вашего телеграм-бота.

Как создать бота в телеграм: инструкция

Для примера создадим чат-бот, которые будет рассказывать, что такое чат-боты и как их создать. Для этого используем платформу Leadtex с 7-дневной бесплатной версией. После регистрации в личном кабинете нужно нажать кнопку «Создать бота». Придумываем боту название. Оно должно легко запоминаться и ассоциироваться с функциями бота. Кем быть в IT: коротко об инженерных профессиях в разработкеДалее нам предлагают выбрать тип и нишу бота. Для нашего выбираем «Школа», ниша — «Продажа обучающего контента» (на случай, если бот станет популярным и мы захотим его монетизировать). Выбор типа бота помогает конструктору подобрать макет. Тут же сервис предлагает пройти обучение и узнать о функционале программы.

Первым делом надо опубликовать бота (кнопка в правом верхнем углу). Для этого выбираем мессенджер, к которому мы подключим бота. В нашем случае это телеграм. Для создания бота нам нужно создать токен, что можно сделать с помощью другого чат-бота, который называется BotFather. Добавляем номер токена в форму, и наш бот автоматически создается. Теперь у него есть адрес, но он еще ничего не умеет. В чат-боте BotFather напишите команду /mybots и выбирите кнопку «Edit bot», затем «Edit Description». Туда нужно внести описание бота, которое будет видно в телеграме. Можно добавить боту и картинку. Для этого нужно нажать на кнопку «Edit Botpic» и выбрать картинку. Возвращаемся в конструктор Leadtex. Разговор с ботом начинается с кнопки /start. Первый блок создается автоматически. После этого в блоке «Цепочка сообщений» нужно написать сообщение-приветствие и краткое описание функций — это будет первое, что увидит пользователь бота. Туда же можно добавить гифку или картинку.
Создаем следующую цепочку сообщений с двумя вариантами ответа. Так в боте пользователь сможет выбрать тему, которая ему интересна: базовая информация о чат-ботах или информация о том, как их создать. Если нажать на кнопку «Настройка клавиатуры» под «Меню», то можно выбрать тип расположения ответов. Мы хотим, чтобы ответы были не друг под другом, а стояли рядом. Переставляем их в нужное положение.
Сейчас нужно разделить сценарий бота на две ветки (в зависимости от темы, которую выбрал пользователь). В каждой добавляем варианты информации, которую может запросить пользователь. От каждой темы («Все о чат ботах» и «Как создать бота») проводим линии к соответствующему блоку.
В первой цепочке в варианте ответа «Кто такие эти боты?» вставляем ссылку, которую бот отправит пользователю. Если пользователю хватило информации, то он может нажать на «Спасибо», после которой бот вернется к цепочке «Что тебе интересно узнать о чат-ботах?» (для этого ставим стрелочку обратно к нужному блоку). Так пользователю не придется заново начинать диалог с ботом, чтобы вернуться к выбору тем. Если информации пользователю не хватило, то бот отправит ссылку на ещё один сайт (для этого добавляем еще один блок, но уже с другой ссылкой — к нему ведем стрелку от предыдущего блока, от него — к блоку «Что тебе интересно узнать о чат-ботах?»). Блоков со ссылками можно создавать столько, сколько посчитаете нужным. Мы добавили еще несколько материалов по тому же принципу. Последнее сообщение цепочки вернет пользователя к блоку «Что тебе интересно узнать о чат-ботах?» Добавляем блоки для всех вариантов ответа первой ветки сценария. Вторая ветка поможет пользователю с поиском материалов для создания бота. Здесь мы делим блок на две части: для программистов и для новичков. Для программистов мы создаем блок со ссылками на туториалы по созданию чат-ботов на разных языках: Python, Java, PHP, Ruby и C##. Для новичков — блок со ссылками на конструкторы ботов. В последнем блоке (если пользователь несколько раз нажимал «Хочу еще») вместо ссылки ставим фразу «А у меня больше ничего нет». И делаем этот блок финальным — залинкуем его с блоком «Что тебе интересно узнать о чат-ботах?».
Можно тестировать бот от Bubble. Тестировать чат-бот Список списков: что почитать в Twitter про карьеру в IT

Еще по теме:  Как пригласить пользователей в Телеграм канал

Где научиться созданию чат-ботов в телеграм и не только

  • Aimylogic предлагает бесплатный гид по разработке чат-ботов с инфографикой, лекциями экспертов, правилами создания и продвижения бота. Подойдет новичкам.
  • В блогах компаний Konverbot и TextBack, которые занимаются созданием ботов по запросу.
  • На Bot Penguin есть аналитические тексты о сфере чат-ботов. Там же можно создать собственного бота с помощью онлайн-конструктора.
  • Создатели платформы WotNot рассказывают в своем блоге о маркетинге чат-ботов, анализе качества их работы и дизайне интерфейса.
  • На ютуб-канале сервиса Robochat, который используется для продаж и поддержки клиентов через мессенджеры, выходят ролики о работе с покупателями через чат-ботов.
  • Канал Чат-боты LEADTEX рассказывает о создании чат-бота для бизнеса и не только. Ролики выходит каждую неделю. На канале часто проводят прямые трансляции по теме.
  • Серия роликов от ютуб-канала Python Engineer научит программировать ботов на Python.

article widget img

«‎‎Главная ошибка собеса — подгонять ответы»‎. Рекрутеры рассказали о найме в IT

Откуда берутся IT-рекрутеры, с какими трудностями они сталкиваются в попытках закрыть позиции и какие ошибки сами совершают на интервью — полезно знать перед тем, как искать работу.

Источник: bbbl.dev

Как написать бота в Телеграме на Python с нуля — пошаговая инструкция

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

Вопрос остается в другом: как сделать бота так, чтобы не растратить миллионы на отладку и работу? Несмотря на то, что существует огромное количество автоматических конструктов, все равно нужно потратить немало времени на разбор алгоритма и итогового кода. К тому же они не могут гарантировать корректную работу абсолютно всех функций. Например, когда кто-то захочет связать курс доллара с днями проигрышей «Спартака», ему придется самостоятельно настраивать логику в собственной программе.

Программирование — вот, за чем стоит создание качественного бота. И мы попросту не могли обойти эту тему стороной, потому что с помощью Python создать автоматизированную систему в Телеграме проще простого. Копируем код, исследуем каждую строчку и удивляемся результатам!

Действие 1. Немного теории-базы для понимания принципа работы API Telegram

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

Разработчики Telegram создали функционал для удобного использования API HTML. Он, в свою очередь, зависит от URL, общий вид функции:

При этом #названиеметода# — может быть как getChat (открыть чат), sendMessage (отправить сообщение), так и getUpdates (обновление). Для подтверждения подлинности бота в системе внутри каждой программной строки указывается токен — специальные символы, создающиеся при формировании бота.

Общий вид токена представлен далее:

При этом стоит понимать, что большая часть методов требует предоставления дополнительных параметров. В случае с sendMessage — непосредственный текст и chat_id. Именно поэтому внутри ботов реализуются как POST, так и GET запросы, которые передаются как URL-строки (например, application/#x-www-form-urlencoded#) и могут быть представлены только в кодировке UTF-8.

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

В том случае, если значение поля «ok» равно true, результат обработки появится в поле, именованном «field». В ином случае текст ошибки можно будет найти в «description».

Второй вопрос, который необходимо изучить — каким образом бот будет получать сообщения от пользователей, и как реализуется дальнейшая обработка?

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

Первый — ручная обработка методов при помощи getUpdates. То есть, бот будет получать объекты-массив формата Update. При этом сама функция работает как длинный опрос, то есть, изначально пользователи отправляют запросы, система обрабатывает их, выдает результат, и идет откат к первому действию, пока не закончится работа бота. Если не хочется производить повторную работу и тратить вычислительные мощности, лучше задуматься над параметром offset.

Метод getUpdates настоятельно рекомендуется использовать, если:

  1. Нет желания формировать произвольную настройку HTTPS.
  2. Производится работа со скриптовыми языками, трудно встраиваемыми в деятельность веб-серверов.
  3. Бот находится время от времени в высокой нагрузке.
  4. Периодически производится смена сервера для бота.

Второй — использование метода setWebhooks. Таким образом Телеграм будет автоматически перенаправлять все запросы на конкретно указанный URL сразу же, как они будут появляться. При этом необходимо заранее позаботиться о подготовке HTTPS-сертификата, либо создать новые, но обязательно их заверить.

Метод Webhooks является одним из оптимальных в том случае, если:

  1. Используется веб-язык для дополнения программирования (PHP, HTML).
  2. Бот не страдает от высокой нагрузки и нет необходимости самостоятельной обработки запросов.
  3. У бота есть стабильное место внутри веб-сервера.
Еще по теме:  Где найти менеджера поиска в Телеграмме

Третий, не менее важный вопрос: каким образом производится регистрация бота внутри социальной сети Телеграм?

Касательно Python, одна из наиболее часто используемых библиотек — PyTelegramBotAPI. Она написана в соответствии с базовыми принципами ООП и является лишь оболочкой для HTML-запросов. При этом все типы данных представляют собой отдельные классы.

Действие 2. Подготовка плацдарма для взлета бота

Основа бота на Python — новейшая библиотека PyTelegramBotAPI (в простонародье «Телебот»). Прежде чем начинать работу непосредственно с программированием, необходимо убедиться, что на компьютере установлена актуальная версия программного обеспечения. Функция для Linux:

После этого при помощи командной строки (Windows) или терминала (Linux) необходимо произвести установку библиотеки:

На этом все приготовления закончены — настоятельно рекомендуется использовать версию Python 3-го поколения (3.7+). Это избавит от проблем с совместимостью, наиболее актуальные версии расположены на официальном сайте.

Действие 3. Настройка речевого аппарата бота

Вне зависимости от того, в какой именно среде будет писаться код (блокнот, Jupyter Notebook), программирование будет одинаковым — использование long pool, много упорства и немало фантазии под соусом из функционала библиотеки Телебота.

При этом стоит понимать, что поле «content_types» может принимать различные значения в зависимости от ситуаций — это может быть набор-массив, числа, знаки и тому подобное. Например:

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

Дальнейший код является сугубо демонстрационным и лишь описывает основной синтаксис взаимодействия библиотеки Телебот и Python. Постараемся создать такую программу, чтобы пользователь писал «Привет», а в ответ получал эксклюзивный «Привет от Партнеркина!».

if message.text == «Привет»:

bot.send_message(message.from_user.id, «Привет от Партнеркина!»)

elif message.text == «/help»:

bot.send_message(message.from_user.id, «Напиши «Привет»)»)

else:

bot.send_message(message.from_user.id, «Партнеркин помогает с /help»)

Каждая из указанных функций характеризует поведение пользователя — что именно он может ввести, и как на это должен реагировать бот. Остается добавить только одну строку, которая работает только с методом long pool:

Вне зависимости от того будет ли находиться пользователь в диалоге, каждую секунду бот будет спрашивать непосредственно у социальной сети «Пишет ли мне этот пользователь в этом диалоге?». Постепенно расширяясь на множество диалогов, возможно увеличение времени задержки.

Действие 4. Добавление логики и мозгов

Взаимодействие с пользователем посредством угадывания каждой его фразы — это, конечно, весело. Однако мы постараемся расширить функционал, введя количество покупок, наименования и стоимость. В этом нам потребуется следующий метод register_next_step_handler:

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

def get_price(message):

global price;

while price == 0: #проверка, что цена не равна 0

try:

price = count*100 #проверка, что

except Exception:

bot.send_message(message.from_user.id, Некорректное количество товара);

keyboard = types.InlineKeyboardMarkup(); //кнопочки

key_yes = types.InlineKeyboardButton(text=’Да’, callback_data=’yes’); #кнопка «Да»

keyboard.add(key_yes); #добавление кнопки в клавиатуру

key_no= types.InlineKeyboardButton(text=’Нет’, callback_data=’no’);

keyboard.add(key_no);

question= ‘Итоговая стоимость ‘+str(age)+’ за ‘+name+’ в количестве ‘+price+’?’)

bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)

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

Самый последний шаг — добавить типы из начальной библиотеки:

Действие 5. Расширение функционала

Функционал Телебота поистине безграничен — постоянно добавляются новые фишки, пользователи демонстрируют исключительные функции, которые в режиме реального времени позволяют не столько взаимодействовать с пользователями, сколько снимают данные и фиксируют сигналы для работы (с валютами, например).

Но касательно работы с пользователями, разработчики постарались по максимуму, добавив, например, целых два типа кнопок:

Классическая RelpyKeyboardMarkup — кнопки расположены непосредственно под полем ввода сообщения:

Современная InlineKeyboardMarkup — кнопки привязаны к конкретному сообщению:

Также стоит понимать, что полноценные проекты все равно рано или поздно потребуют дополнений в виде активных баз данных. Для организации подобного функционала рекомендуется использовать docker-compose — он объединяет множество массивов в один контейнер. Данная библиотека позволяет не только создавать новые базы данных, но и налаживает связь между существующими.

Эксперты отвечают

М Михаил

Телеграм-боты могут всё, что угодно?

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

Если планируется работа с достаточно крупными проектами, рекомендуется также начать работу с виртуальным выделенным сервером (VPS). В отличие от стандартного AWS он обладает большими возможностями для гибкого программирования, а также устанавливается в процессе использования библиотеки Docker.

Вывод

Написать свой собственный код для бота — значит, быть уверенным в его полной работоспособности, предполагать всевозможные тесты и уметь отлаживать нерабочие куски в режиме реального времени. Современные технологии позволяют овладеть языком программирования за считанные часы — так почему бы не воспользоваться такой возможностью для автоматизации работы в Телеграме?
А если у вас за плечами часы практики или есть готовое портфолио по созданию подобных ботов, то смело можно размещать свое резюме в нашем специальном разделе, где заказчики ищут исполнителей для своих проектов.

Источник: partnerkin.com

Рейтинг
( Пока оценок нет )
Загрузка ...