Как написать бот для регистрации

Пишем бота регистрации аккаунта на PHP, эмулируя AJAX-запросы на CURL

27 окт. 2019 г.
5 min read

Пишем бота регистрации аккаунта на PHP, эмулируя AJAX-запросы на CURL

Пока вышла горячая статейка с основными приёмами при работе с cURL в PHP, я решил написать скрипт простого бота, работающего с AJAX, чтобы закрепить материал на реальном примере. В этой статье будут упускаться многие очевидные вещи, эта статья будет более ориентирована на демонстрацию подхода при написании ботов для любого сайта. Я, для текущего примера решил выбрать сайт webparse.ru, для которого мы напишем скрипт заполнения почты и регистрации нового аккаунта.

Забегу наперёд, и скажу, что для написания бота для этого сайта, необходимо будет эмулировать AJAX запросы из PHP, и обрабатывать JSON ответ от сервера.

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

Шаг 1 — изучаем жертву

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

Потому, для начала, переходим по ссылке webparse.ru, и сразу видим форму с вводом email адреса для регистрации: target_first_visit

Для того, чтобы понять, какие параметры нужно отправлять, и на какой URL-адрес, нужно:

  • включить отладочную панель в браузере (f12)
  • открыть вкладку Network (она же Сеть)
  • включить опцию Preserve log (если не включить её, то вся история запросов будет очищена при перезагрузку страницы, оно вам надо?).
    2s_step_site

После чего, нам нужно провести цикл действий, которые мы собираемся автоматизировать (наблюдая при этом за каждым выполненным запросом и переданными данными). Наш цикл действий состоит только из заполнения почты и клика по кнопке Зарегистрироваться.

И после клика по кнопке регистрации, будет отправлен AJAX-запрос, который мы увидим в открытой панеле. И уже из информации на этой панеле, мы можем изучить все данные, которые нам необходимо будет сэмулировать PHP-скриптом.

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

Исходя их этой информации, мы понимаем, что нам нужно отправить данные методом POST на URL https://webparse.ru/module_auth/ajax_light_register, передав параметр email как почту для регистрации.

Однако, здесь есть один тонкий момент. Для того, чтобы полностью сэмулировать работу браузера, реального пользователя, нужно передать так же заголовки, которые помогут нам не выдать себя за бота.headers_explai_---n
Я выделил основные заголовки, которые в большей мере котируются сервером, которые желательно отправлять. Сейчас, кратко рассмотрим их назначение:

  • Accept — заголовок, указывающий на то, в каком формате вы хотите получить данные (JSON, HTML, XML и т.д.). Этот параметр необязательный, и, очень часто, игнорируемый сервером. Но, иногда бывает API, которое умеет отдавать данные в разных форматах, и ориентируется на значение этого заголовка.
  • Content-Type — заголовок, указывающий на то, в каком формате мы отправляем данные. В данном случае, указано application/x-www-form-urlencoded, что тоже является необязательным, потому как, по-умолчанию, он и подразумевается. Другой случай — когда передаётся JSON, тогда, Content-type указывается application/json.
  • Referer — URL-адрес, с которого мы отправляем запрос. Тоже необязательный параметр, однако, некоторые бот-детекторы проверяют этот параметр, ожидая, что он будет ссылаться на домен основного сайта (в текущем случае — webparse.ru).
  • X-Requested-With — обязательный параметр в текущем случае, со значением XMLHttpRequest, которое идентифицирует запрос как AJAX. Тоже, одна из примитивных проверок бот-детектора.
  • User-Agent — строка, указывающая на браузер, версию, ОС, и прочую мета-информацию о клиенте, выполняющего запрос. Его желательно передавать всегда, так как обычный браузер всегда передаёт эту информацию. И, если вы его не передаёте, то с вами явно что-то нечисто, и вас будет легко вычислить как бота.

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

Шаг 2 — изучаем ответ, полученный от сервера

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

И вот, что мы имеем при успешном запросе: preview

Посмотрев на него, можно увидеть, что данные приходят в формате JSON, и содержат поля: errors (с массивом ошибок, если они есть), и errors_exists — булев флаг, показывающий, были ли ошибки при выполнении скрипта.
И, теперь, можем приступить к последнему шагу — написанию скрипта на PHP.

Шаг 3 — пишем скрипт и тестируем

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

$url = 'https://webparse.ru/module_auth/ajax_light_register';

$data = ['email' => 'test12321@spaces.ru'];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Accept: application/json, text/javascript, */*; q=0.01',
    'Referer: https://webparse.ru/',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
    'X-Requested-With: XMLHttpRequest'
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$data = json_decode(curl_exec($ch));

if($data->errors_exists) {
    echo 'Error request...';
    print_r($data->errors);
    die;
}

echo 'Успешный ответ. Письмо было отправлено на вашу почту.';
print_r($data); // [errors] => Array ( ) [errors_exists] => false

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

Резюме

В этой статья я продемонстрировал подход, которому следую при написании ботов на PHP. В этой статье были затронуты темы написания ботов, эмулирующих AJAX-запросы на PHP, темы возможных защит и бот-детекторов, которые мы научились обходить. Итого, из
этой статьи на узнали, как написать бота на PHP, как в PHP определяют ботов, как в PHP cURL задать User-Agent, и зачем он нужен, и как при написании собственного бота не попасться на эти детекторы. Дальше — больше: продвинутые темы парсинга, полезные инструменты, написания ботов на PHP, многопоточная работа.

Основная идея реализации ботов должна была появиться в вашей голове сама собой: имитация браузера в PHP (при написании ботов) происходит на основе изучения сайта-донора и воссоздание последовательности HTTP-запросов, как на сайте-доноре. То есть, при написании ботов вам не нужно программировать браузер, типа: нажать на кнопку с название «регистрация», ввести почту в форму, подтвердить, запустить JavaScript… Вам нужно всего лишь понять, куда, какие, и какого типа данные нужно отправлять, и воссоздать отправку этих данных в скрипте curl-запросами (или другими аналогами). И ваша последовательность теперь будет выглядеть как: отправить на URL http://... методом POST данные [...], прочитать ответ, обработать, повторить, или продолжить дальше и т.д.

vk_reg_bot

Бот ВКонтакте для регистрации на события с помощью QR-кода.

Использует API ВКонтакте для чат-ботов и pythonanywhere.com как облачный сервер.


Описание работы

Бот был призван упростить процесс регистрации студентов на отработки по физической подготовке в МГТУ им. Баумана. В результате использования приложения время регистрации сократилось более чем в 20 раз.
Простые модификации кода позволят адаптировать бота под любые схожие задачи.

  1. Администратор сообщества с помощью секретных команд (папка secret_commands) создает событие и открывает на него регистрацию.
  2. Студенты в свою очередь регистрируются на событие и получают в ответном сообщении QR-код.
  3. В назначенное время студенты приходят на событие и предъявляют организатору свой QR-код. То же самое они делают после окончания отработки. Процесс считывания QR-кода осуществляется любым мобильным приложением для этих целей.
  4. Организатор отправляет боту csv-файл со списком QR-кодов
  5. Студенты просматривают историю событий, расписание, и процесс начинается заново с пункта 1.

Как запустить

  1. Скопируйте репозиторий на сервер (рекомендуется pythonanywhere.com)
  2. Выберите сообщество ВК, к чату с которым будет привязан бот.
  3. Создайте ключ доступа (Callback API) в панели управления сообществом и установите соединение с сервером.
  4. Создайте БД MySQL и сделайте таблицы (пример скрипта для создания таблиц в файле create_db.txt)
  5. Создайте файл settings.py следующего вида:
token = 'abcdefg****************************************************************************'
confirmation_token = '********'
admins = [1234****, 8765****] #id ВК администраторов
DB_params = {'host':"****.mysql.pythonanywhere-services.com", 'user':"****", 'passwd':"****", 'db':"****$****"} #впишите настройки соединения с БД
  1. Перезагрузите сервер и поробуйте отправить сообщение сообществу

Описание команд

commands

Команда Файл Описание
ПРИВЕТ hello.py Приветствие
ПОМОЩЬ help.py Справка по командам
РЕГИСТРАЦИЯ register.py Регистрация студента в боте
КАФЕДРА department.py Выбор кафеды
ГРУППА group.py Указание группы
ПРЕПОД tutor.py Указание преподавателя
ИНФО info.py Информация о студенте
РАСПИСАНИЕ schedule.py Расписание событий
ИДУ train.py Запись на отработку
ИСТОРИЯ history.py История посещений

secret_commands (для администраторов)

Команда Файл Описание
ЗАНЯТИЕ event.py Добавить новое занятие
ОПИСАНИЕ about.py Добавить описание занятия
АКТИВ activ.py Открыть регистрацию на занятие
ДЕАКТИВ deactiv.py Закрыть регистрацию на занятие
СТАРТ start.py Добавить список стартовавших
ФИНИШ finish.py Добавить список финишировавших
ЭКСПОРТ export.py Получить список студентов

License

MIT

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

В данной статье будет рассказано о том, как написать простой бот на Python. А еще – рассмотрены особенности соответствующего ЯП, преимущества и недостатки упомянутого «виджета». Примеры будут приведены на основе Telegram. Здесь bot – это весьма распространенное явление.

Бот – это…

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

Переписка с таким ПО осуществляется непосредственно через чат. Клиент дает боту команды, которые он обрабатывает и выполняет в режиме 24/7. Ключевая задача “робота» – дать ответ на вопрос клиента, опираясь на заданную программу. С помощью оных удается экономить не только время, но и остальные ресурсы.

Умения

Бот Телеграмм умеет многое. Сегодня к спектру его навыков относят следующие моменты:

  • проведение обучения;
  • развлечение публики;
  • предложение и запуск «мини-игр»;
  • работа с поисковыми системами в пределах Сети;
  • скачивание данных – фото, видео, аудио, документов;
  • выступать в качестве напоминалки;
  • участие в групповых чатах для решения заранее определенного спектра задач (пример – согласование оптимального времени встречи);
  • комментирование постов и статей;
  • использование функций управления умным домом и другими подобными устройствами.

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

Преимущества и недостатки

Как и любое другое ПО, bot – это «виджет», который имеет ряд сильный и слабых сторон. Их предстоит учитывать каждому, кто хочет подключить соответствующего «помощника» в своем чате/диалоге.

Сильные стороны

К преимуществам ботов Телеграм относят:

  • круглосуточную помощь – функционирование bots прекратят только в случае аварий на серверах, которые случаются крайне редко;
  • удобство и простоту использования – для большинства команд достаточно выбрать из предложенного списка подходящую операцию;
  • мгновенное получение ответа;
  • отсутствие требований к мощности задействованного устройства – это связано с тем, что для работы ботов используются возможности сторонних серверов;
  • высокий уровень безопасности;
  • отсутствие необходимости инициализации дополнительного ПО для запуска рассматриваемого вида «помощника».

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

Слабые стороны

Минусы у такого ПО тоже есть, но они не слишком весомые:

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

Бот должен быть полезным, отвечать потребностям ЦА, а также целям владельца чата. Составить его удастся «с нуля» за 15-30 минут. Особенно если придерживаться определенного алгоритма действий.

Почему Питон

Python – универсальный язык программирования с возможностью использования принципов ООП. Он обладает простым и понятным синтаксисом, освоить который еще проще, зная английский.

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

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

Это – идеальный вариант для веб-разработки, приложений для мессенджеров и мелких проектов. Крупные и масштабные игры на чистом Python составить не получится. Для этого предстоит подучить Java или C++.

Составление софта

Bot – это просто и удобно. Телеграм позволяет внедрять и искать такие «виджеты» без особого труда. Хорошего бота удастся составить менее чем за час. Главное – придерживаться определенного алгоритма действий.

Принцип

Перед непосредственной разработкой необходимо разобраться в том, как все будет работать. Bot для «Телеги» функционирует по определенным принципам. Пример будет рассмотрен на компьютере и Telegram-клиенте.

Стоит обратить внимание на следующее:

  1. На компьютере есть интерпретатор Python. Также на устройство необходимо поставить сервер Телеграмма и клиент.
  2. Внутри интерпретатора будет функционировать программа-бот. Она будет отвечать за весь софт: в оной прописана логика и шаблоны, а также возможные операции.
  3. Внутри приложения, написанного через Питон, имеется библиотека, отвечающая за связь с сервером Telegram. В нее нужно вшить секретный ключ. Это поможет указать серверу клиента, что программа связана с конкретным ботом.
  4. Когда клиент с «Телегой» осуществляет запрос гороскопа, bot осуществляет выгрузку на сервер, а сервер – выводит результат на компьютер.
  5. Запрос будет проходить обработку через утилиту на Python, дает ответ на сервер Телеграмма.
  6. Сервер передает необходимый результат непосредственному пользователю.

Bot внедряется без особого труда. Описанный принцип действий актуален не только для гороскопов. Он подойдет для bot любого вида в мессенджере.

Краткий план – пошагово

Чтобы bot Телеграм работал, можно представить процедуру его подключения так:

  1. Провести регистрацию нового бота в мессенджере.
  2. Установить Питон-библиотеку для работы с Telegram.
  3. Добавить библиотеку в программу с гороскопом.
  4. Научить bot реагировать на сообщения в пределах чата.
  5. Прописать там же кодификацию, которая отвечает за кнопки выбора знака зодиака.
  6. Сделать так, чтобы при клике по кнопке отображался гороскоп выбранного варианта.

Каждый этап предусматривает собственные нюансы и особенности, о которых должен помнить каждый разраб. Иначе справиться с поставленной задачей не получится.

Регистрация

Для того, чтобы зарегистрировать нового бота в Телеграмме, нужно:

  1. Открыть соответствующий мессенджер.
  2. При помощи командной строки найти @BotFather. Он несет ответ за регистрацию нового bot.
  3. Кликнуть по надписи Start, а также указать команду / newbot.
  4. Система задаст поочередно вопросы о названии бота и его ника. Имя должно быть уникальным. С первого раза установить его не всегда получается.

На этом первый этап подготовки завершен. Можно двигаться дальше.

Библиотека и ее инициализация

Следующий этап – это установка подходящей библиотеки Python. Работать с «Телегой» можно через telebot. Второй вариант – это инициализация Webhook. Первый вариант проще, поэтому заострим внимание на нем:

  1. Запустить командную строку от имени администратора на устройстве.
  2. Набрать команду pip install pytelegrambotapi.
  3. Подтвердить обработку операции.
  4. Чтобы приложение понимало бота, в самое начало кода требуется добавить: import telebot;
  5. Bot = telebot.TeleBot(«токен»);.
  6. Вместо слова «токен» вставить настоящий токен, выданный @BotFather.
  7. Открыть программу гороскопа и добавить ее.

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

Гороскоп программа

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

Сразу после формирования ПО можно приступить к следующему этапу настройки.

Реакции

Bot должен реагировать на слово «Привет». После него будет выдана реакция на соответствующую фразу. Чтобы все работало нормально, необходимо добавить после строчек импорта новый метод. Он отвечает за соответствующую операцию:

@bot.message_handler(content_types=['text'])
def get_text_messages(message):
  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.")

Теперь нужно:

  • Добавить после метода строку типа: bot.polling(none_stop=True, interval=0).
  • После ее добавления у бота будет постоянно проверяться наличие новых сообщений.
  • Прописать код, который предполагает работу с кнопками. Сначала осуществляется вывод всех знаков зодиака. При клике по конкретной – отображается гороскоп оного.

  • Добавить обработчик кнопок. Он будет реагировать на слово zodiac. При написании оного в программе отобразится случайный текст:
# Обработчик нажатий на кнопки
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
# Если нажали на одну из 12 кнопок — выводим гороскоп
if call.data == "zodiac": 
# Формируем гороскоп
msg = random.choice(first) + ' ' + random.choice(second) + ' ' + random.choice(second_add) + ' ' + random.choice(third)
# Отправляем текст в Телеграм
bot.send_message(call.message.chat.id, msg)
  • Можно убрать кодификацию, которая ранее отвечала за вывод знаков зодиака в консоли. После очистки получится приложение:


На этом рассматриваемый «помощник» окончен. Теперь все должно нормально работать. Остается запустить его в Телеграме и получить тот или иной результат.

Команды управления

«Помощник» имеет разные функции и команды. Они пишутся через знак «слеш» («/») прямо в сообщении чата. Вот основные операции:

  • /start – начать работу помощника;
  • /help – вывод помощи на экран;
  • /settings – открыть настройки.

Некоторые подобные «дополнения» способны понимать команды на русском языке. Пример – запрос у робота Антона, который «подрабатывает» в Гидрометцентре. Если при общении с ним прописать «Погода Калининград», будет выведен соответствующий результат.

Почему «молчит»

Иногда бывает так, что «помощник» не отвечает. Такое наблюдается при вводе любой команды/выбора подходящего варианта из меню. Данное явление может происходить по нескольким причинам:

  1. Проблемы и неполадки на сервере. Пример – сбой или полный отказ оного от функционирования.
  2. Ошибки при написании кодификации. Распространенное явление среди новичков.
  3. Ввод команды, которую Телеграм бот на Python не понимает. В этом случае можно воспользоваться Google для поиска подходящих операций и их форматов.

Иногда помогает полное отключение и перезапуск «помощника».

Как быстро освоить Python

Питон и его возможности можно выучить в ВУЗе, техникуме или самостоятельно поисках материалы в Сети. Вот видео по боту в «Телеге». Самообразование – один из лучших, но долгих методов обучения.

А чтобы надписи типа examples, def get, main() и другие не доставляли хлопот, стоит пройти дистанционные курсы. Их преимущества:

  1. Доступность. Обучение можно проводить в любом месте и в любое время, имя под рукой интернет.
  2. Разнообразие направлений. Есть предложения для новичков и опытных программеров.
  3. Срок обучения – до 12 месяцев. За это время пользователь сможет освоить даже несколько направлений.
  4. Хорошо продуманная программа, подпитанная практикой и кураторством опытных разработчиков.

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

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

Создадим бота, который будет приветствовать, задавать вопрос с вариантами ответов и реагировать на нажатие на кнопок.

Шаг 1. Создайте аккаунт разработчика

1. Зарегистрируйтесь на botmother.com с помощью электронной почты (на нее придет письмо с подтверждением) или войдите через Google.

2. Нажмите кнопку «Создать нового бота» (справа внизу).

3. Выберите «Пустой бот».

Перед вами откроется конструктор— это место, где можно разрабатывать бота и добавлять функции.

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

Логика бота создается с помощью экранов— это сообщения бота (шаги, этапы), внутри которых могут быть различные функции. Автоматически создается «Стартовый экран» — первое сообщение от бота.

На каждый экран можно добавлять компоненты— это функции и действия бота (например, отправление текста, картинок, кнопок и т.д.).

Все компоненты расположены на вкладке справа.

Шаг 2. Создайте приветствие

1. На вкладке «Компоненты» нажмите на компонент «Сообщение» и перетяните его на экран.

2. Напишите любой текст. Например, «Привет! Это мой первый бот».

3. Нажмите зеленую кнопку «Сохранить» (справа внизу).

Шаг 3. Подключите бота к мессенджеру

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

Создадим бота и придумаем ему название:

2. Напишите ему /newbot.

3. Придумайте и напишите название бота. Оно будет отображаться в контактах и чатах. Например, «Hello, bot».

4. Придумайте и напишите юзернейм. Он используется для упоминания бота и в ссылках. Юзернейм должен быть на латинице и обязательно заканчиваться на «bot». Например, «botmother_hello_bot».

Теперь нужно подключить бота в Telegram к вашему аккаунту разработчика:

2. Скопируйте токен бота.

3. Вернитесь в конструктор, найдите и откройте в меню слева раздел «Настройки».

4. Переключателем включите платформу Telegram.

5. Нажмите кнопку «Изменить».

6. Вставьте ранее скопированный токен бота.

7. Сохраните изменения.

Теперь бот подключен к конструктору, а значит, он может отвечать всем пользователям. Протестируем?

1. Найдите в поиске Telegram своего бота по юзернейму.

2. Нажмите «Начать» (или «Start»). Бот должен отправить приветственное сообщение.

Отлично! Ваш бот умеет отправлять сообщение.

Шаг 4. Добавьте дополнительные функции

Усложним бота. Пусть он задает вопрос с вариантами ответов и присылает разные сообщения в зависимости от выбора пользователя.

Например:

Текст: Как дела?

Первая кнопка: Хорошо

Вторая кнопка: Плохо

Для этого добавим еще два экрана, кнопки и изображение:

1. Откройте конструктор.

2. Добавьте два новых экрана. Для этого нажмите кнопку «Добавить экран» дважды.

3. Сохраните изменения.

Можно изменить названия добавленных экранов двойным кликом:

1. Два раза кликните на названия экранов.

2. Отредактируй тексты. Например, «Экран Хорошо» и «Экран Плохо».

Добавим кнопки, на которые пользователи смогут нажимать:

1. Переместите компонент «Кнопки» на «Стартовый экран».

2. Напишите текст. Например, «Как дела?».

3. Добавьте две кнопки.

4. Напишите тексты на кнопках. Например, «Экран Хорошо» и «Экран Плохо».

Каждая кнопка должна вести на определенный экран, который указывается в настройках кнопки:

1. Нажмите на первую кнопку.

2. В поле «Переход на экран» выберите экран «Экран Хорошо».

3. Нажмите на вторую кнопку.

4. Выберите другой экран — «Экран Плохо».

5. Сохраните изменения.

Итак, на «Стартовом экране» пользователь нажимает на кнопки и попадает на разные экраны. Нужно заполнить их контентом:

1. Переместите компонент «Изображение» на экран «Экран Хорошо».

2. Загрузите любую картинку или вставьте ссылку на изображение.

3. Сохраните изменения.

Теперь заполним следующий экран:

1. Переместите компонент «Сообщение» на экран «Экран Плохо».

2. Напишите текст. Например, «Не унывай, все будет хорошо!». Можно добавить эмодзи.

3. Сохраните изменения.

Все готово!

Шаг 5. Протестируйте бота

У нас получился такой сценарий: бот приветствует пользователя и задает вопрос с вариантами ответов; пользователь нажимает кнопку, и бот присылает определенное сообщение. Давайте протестируем!

1. Откройте своего бота.

2. Напишите команду /start.

3. Понажимайте на кнопки.

Поздравляем!

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

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

Если вы устали вручную рассылать подписчикам новые коллекции, не можете больше отвечать на стандартные вопросы и вообще хотели бы перепоручить это кому-то другому – создайте своего бота в Телеграме.

В статье подробно расскажем, как это сделать за пару часов. Погнали.

Содержание

  • Зачем нужен бот в Телеграме
  • Как сделать бота в Телеграме
  • Как настроить нового бота с помощью Manybot
  • Как выглядит готовый к использованию бот

Зачем нужен бот в Телеграме

Потратьте немного времени и сделайте бесплатного бота в Телеграме, чтобы освободить себя от рутинной работы. Этот маленький помощник будет выполнять простую работу по общению с пользователями: разговаривать с ними, отправлять новые коллекции и отвечать на стандартные вопросы 24/7. Он не устает и не оставляет без внимания сообщения подписчиков, всегда отвечает им и создает уютную атмосферу, пока владелец занят более важными задачами.

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

Бот в Телеграме помогает подписчикам:

  • искать информацию;
  • читать и скачивать текстовые файлы;
  • искать и смотреть видео;
  • искать и слушать аудио;
  • комментировать статьи внутри мессенджера;
  • учиться – например, учить новые слова на иностранном языке.

Кроме того, бот умеет:

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

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

В Телеграме и других соцсетях можно публиковать посты через сервис отложенного постинга SMMplanner. Вы можете планировать публикации одновременно в ВК, Одноклассники, другие соцсети и Телеграм. Это очень удобно – оцените сами. Тестировать весь функционал можно бесплатно в течение 2 недель после регистрации по ссылке – SMMplanner.

Подробно о том, как настроить автопостинг и зачем он нужен, – в статье «Автопостинг в Телеграме: боты, сервисы, возможности».

Одно из главных преимуществ любого бота в Телеграме – его не нужно устанавливать на устройство. Он работает прямо в мессенджере и там остается всегда.

Есть много способов создать бота в Телеграме: на телефоне или ПК, платных и бесплатных, с помощью программирования или конструкторов. А можно – вообще без знания кодов, на телефоне за пару часов.

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

Как сделать бота в Телеграме с помощью телефона

Заходим в Телеграм, в строке «Поиск» находим BotFather – это конструктор чат-ботов в Телеграме, нажимаем «Старт».

Хочешь сделать бота – найди бота, который их создает

Хочешь сделать бота – найди бота, который их создает

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

Бот пришлет сообщение, что поможет создать и управлять вашими ботами. А чтобы создать нового, нужно нажать на /newbot.

В большом количестве вариантов выбираем нужный

В большом количестве вариантов выбираем нужный

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

Если придуманное имя уже существует, BotFather предложит придумать другое, уникальное.

В нашем случае тренировочный бот выступает в качестве магазина одежды. Поэтому мы дали ему название – Showroom «Чёткие шмотки».

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

Робот родился, но он еще ничего не умеет. Ему еще предстоит научиться говорить и ходить.

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

Желтым прямоугольником выделен токен бота

Желтым прямоугольником выделен токен бота

Все остальное на английском и нам пока не нужно.

Далее листаем чат с BotFather вверх и находим там ссылку /mybots или вводим ее вручную. Выбираем нашего готового бота и нажимаем на него.

Если у вас несколько ботов, то и для выбора главный бот предоставит несколько вариантов

Если у вас несколько ботов, то и для выбора главный бот предоставит несколько вариантов

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

Кроме прочего, главный бот будет показывать, заполнены ли поля – где пусто, там будет стоять соответствующий знак

Кроме прочего, главный бот будет показывать, заполнены ли поля – где пусто, там будет стоять соответствующий знак

Для первой настройки нужно нажать Edit Bot. В этом разделе можно редактировать:

  • имя;
  • описание;
  • информацию;
  • картинку бота.

На картинке мы видим, что у бота есть только имя. Описания, команд и картинки пока еще нет. Поэтому нам сейчас и предстоит наполнить нашего юного бота.

Как сделать приветствие в боте в Телеграме? Для создания/редактирования описания бота нужно нажать Edit Description, чтобы BotFather понял, что нам нужно изменить описание бота. После выбора этой функции главный бот пришлет сообщение с предложением ввести описание, которое увидят люди, когда откроют чат с новым ботом в блоке под названием «Что может делать этот бот?»

Заполняем Description – описание бота

Заполняем Description – описание бота

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

Заполняем поле Description и сохраняем изменения

Заполняем поле Description и сохраняем изменения

Мы придумали описание нашему боту. Когда мы заходим в чат, сразу видим его. Теперь бот умеет говорить, для чего он родился. Идем дальше.

После того, как мы придумали описание, выбираем Edit About, чтобы ввести информацию о боте.

Заполняем поле «Описание» или About

Заполняем поле «Описание» или About

BotFather пришлет сообщение с предложением создать описание программы, которое увидят пользователи, когда зайдут в профиль нового бота. Как сделать текст в боте Телеграма – вписать его и сохранить.

Информация о боте готова, текс можно увидеть в чате с BotFather на картинке. Переходим к созданию аватарки.

Выбираем кнопку Edit Botpic, затем нажимаем скрепку, чтобы выбрать фото из галереи и отправляем его главному боту. Также можно сделать фото и использовать его.

Для выбора доступна вся ваша галерея

Для выбора доступна вся ваша галерея

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

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

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

Аватарка готова. Теперь мы можем увидеть, что бот уже не такой, как был до этого. Робот стал лучше выглядеть, у него есть фото и текст с описанием. Всю эту информацию увидят пользователи – не только, когда они зайдут в профиль, но и когда они поделятся ссылкой на бота с другими людьми.

Пора научить новичка командам. Выбираем пункт меню Edit Commands и получаем от бота такое сообщение: «ОК. Пришлите мне список команд для вашего бота, используя этот формат: command1 – описание; command2 – другое описание. Либо отправьте /empty, чтобы список оставался пустым».

Действуем, как говорит нам БотОтец – прописываем последовательно каждую команду

Вы можете создать все команды через BotFather или воспользоваться Manybot. С его помощью вы можете создать красивое меню, разослать сообщения пользователям своего бота, создать команды. И общается он на русском.

Мы создали одну команду и назвали ее «О нас» – для проверки работоспособности. А дальше для настройки действий, меню и команд перешли в Manybot. Так проще. Вы можете поступить как вам удобно.

В Телеграме можно сделать даже свои стикеры. Для бизнеса или для личного использования, порадовать клиентов или посмешить друзей – все на ваше усмотрение. О том, как их делать, мы говорили в статье «Как сделать свои стикеры в Телеграме».

Как настроить нового бота с помощью Manybot

В 2022 году есть еще один конструктор для чат-ботов в Телеграме. Находим Manybot, жмем «Старт» и после приветственного сообщения нажимаем «Добавить нового бота».

Бот говорит с нами на русском, это намного удобнее

Бот говорит с нами на русском, это намного удобнее

Manybot предложит вам перейти в чат с BotFather и скопировать токен своего бота.

Переходим, копируем, нажимаем «Я скопировал токен».

Описание деятельности

После того, как Manybot принял токен нового бота, он предложит коротко описать, чем будет заниматься вновь прибывший бот, но этот момент можно пропустить, нажав команду /skip, как это сделали мы. Тем более, что мы уже описывали это через БотаОтца.

Кликаем на «Я скопировал токен»

Кликаем на «Я скопировал токен»

Далее от Manybot придет сообщение, что новый бот создан и настроен. Затем он предложит отправить сообщение вашим подписчикам с ссылкой на вашего бота.

Кликаем на /skip или прописываем описание заново

Кликаем на /skip или прописываем описание заново

Отправка первого сообщения подписчикам

Конечно, вы можете нажать «Отправить новое сообщение подписчикам», создав какой-нибудь пост. Но какой в этом смысл, если бот еще новичок и ничего пока не умеет? Правильнее и логичнее будет сделать рассылку позже, когда бот будет готов выполнять команды и принимать гостей. Поэтому мы переходим к настройке команд.

Настройка команд

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

В чате выбираем пункт «Создать команду». Бот ответит вам, что вы можете создавать разные команды, на которые он будет отвечать заранее заданным образом.

Кликаем на «Создать команду»

Кликаем на «Создать команду»

Команда создается так же, как и в BotFather – вводим commands и номер. У нас команда уже пятая, так как мы тренировались и настраивали бота и его команды.

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

После запроса commands нужно нажать «Добавить вопрос» и выбрать вариант вопроса.

Бот может отвечать словами или файлами – как настроите

Бот может отвечать словами или файлами – как настроите

Есть 3 типа вопросов:

  • обычные;
  • развернутые;
  • с вариантами ответов.

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

Мы выбираем «Обычный вопрос», и наш бот будет отвечать любому подписчику, который пришлет ему текст, символ или даже картинку.

А что будет отвечать наш бот?

Аналогично настраиваются 2 других варианта

Аналогично настраиваются 2 других варианта

Даем произвольное название нашему обычному вопросу – «Головные уборы», загружаем картинку из галереи и нажимаем «Сохранить». То, что будет написано, покажется пользователям, которые будут запрашивать этот пункт.

Обязательно кликаем на «Сохранить»

Обязательно кликаем на «Сохранить»

Если понадобится отредактировать, нужно в меню бота выбрать пункт «Пользовательские команды» и выбрать ту команду, которую хотите изменить. В любой момент вы можете изменить название, режим и варианты ответов, настроить меню команды.

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

Настройка видимости команды

Выбираем «Настроить гл. меню», а затем «Добавить пункт меню».

У нас это уже не первая команда в настройке, поэтому не удивляйтесь, что у вас количество кнопок намного меньше, это только пока

У нас это уже не первая команда в настройке, поэтому не удивляйтесь, что у вас количество кнопок намного меньше, это только пока

Вводим название пункта меню «Головные уборы», отправляем боту это сообщение, и готовый пункт с этим названием появляется в меню.

Команда готова к использованию, ничего сложного

Команда готова к использованию, ничего сложного

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

Как выглядит готовый к использованию бот

Вот так выглядит наш готовый бот с аккаунта подписчика:

Он рассказывает, что умеет делать, отвечает на команды

Он рассказывает, что умеет делать, отвечает на команды

Выбираем команду «О нас», чтобы посмотреть, поймет ли читатель, куда попал. И получаем ответ от бота «О нашей компании».

Можно ему ответить любым текстом и получаем в ответ: «Пример текста. Наша компания занимается…» Это то, что мы указали в настройках. Вы можете здесь написать все что угодно о своей компании. Старайтесь рассказывать коротко, но понятно. Или просто вставьте ссылку на свой сайт, чтобы люди могли туда зайти и почитать подробнее. Перегружать чат многостраничными сообщениями об «активно развивающейся компании» не стоит, человек вряд ли пришел за этим. А если ему очень интересно, он почитает на сайте.

«О нас» почитали, можно переходить и к делу – посмотрим на «головные уборы»

«О нас» почитали, можно переходить и к делу – посмотрим на «головные уборы»

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

Популярный и короткий вопрос «Еще?» может побуждать пользователя продолжать общение

Популярный и короткий вопрос «Еще?» может побуждать пользователя продолжать общение

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

Таким же образом работают остальные кнопки

Таким же образом работают остальные кнопки

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

Все варианты модной одежды к вашим услугам

Все варианты модной одежды к вашим услугам

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

Если нужно подробно изучить чат-боты и рассылки в ВК, приходите на 14-дневный практический курс «Рассылки, чат-боты и автоворонки ВКонтакте» от SMM.school. Там научитесь автоматизировать работу с помощью Senler, запускать рассылки, прогревать и продавать во ВКонтакте. Это самое актуальное руководство по автоматическим инструментам для продвижения бизнеса в ВК на данный момент.

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

Примеры как зарегистрировать бота в Telegram, описание и взаимодействие с основными методами API. Документация на core.telegram.org и tlgrm.ru (неофициальный, на русском).

Все запросы к API должны осуществляться по HTTPS, подойдет бесплатный сертификат «Let’s Encrypt».

1

Регистрация бота

Для регистрации нового бота нужно написать «папе ботов» @BotFather команду /newbot

Регистрация бота в Telegram

Следующим сообщением отправляем название для бота, обязательно на конце имени должно быть слово «bot» или «_bot». Ответным сообщением получим токен:

Получение токена к bot API Telegram

Тут же можно настроить описание и аватарку:

/setname Имя
/setdescription Краткое описание
/setabouttext Описание бота
/setuserpic Юзерпик

Далее нужно поставить «Webhook» чтобы все сообщения из Telegram приходили на PHP скрипт (https://example.com/bot.php). Для этого нужно пройти по ссылке в которой подставлены полученный токен и адрес скрипта.

https://api.telegram.org/bot<token>/setWebhook?url=https://example.com/bot.php

В ответе будет

{"ok":true,"result":true,"description":"Webhook was set"}

При смене токена, установку вебхука нужно повторить.

2

Входящие сообщения

Сообщения приходят POST-запросом, с типом application/json. Получить его в PHP можно следующим образом:

$data = file_get_contents('php://input');
$data = json_decode($data, true);

PHP

Чтобы посмотреть входящие данные, их придется дампить в файл:

file_put_contents(__DIR__ . '/message.txt', print_r($data, true));

PHP

Текстовое сообщение

Запрос от Телеграм:

Array (
	[update_id] => 17584194
	[message] => Array (
		[message_id] => 26
		[from] => Array (
			[id] => 123456789
				[is_bot] => 
				[first_name] => UserName
				[language_code] => ru-US
			)
		[chat] => Array (
			[id] => 123456789
			[first_name] => UserName
			[type] => private
		)
		[date] => 1541888068
		[text] => Привет бот!
	)
)

Получим текст сообщения:

if (!empty($data['message']['text'])) {
	$text = $data['message']['text'];
	echo $text;
}

PHP

Фотографии

При отправки фото боту, на скрипт приходит массив превьюшек, последним элементом будет оригинальное фото. Максимальный размер файла 20МБ.

Запрос от Телеграм:

Array (
	[update_id] => 17584194
	[message] => Array (
		[message_id] => 38
		[from] => Array (
			[id] => 123456789
			[is_bot] => 
			[first_name] => UserName
			[language_code] => ru-US
		)
		[chat] => Array (
			[id] => 123456789
			[first_name] => UserName
			[type] => private
		)
		[date] => 1541924962
		[photo] => Array (
			[0] => Array (
				[file_id] => AgADAgADUqexG7u8OEudBvlhgMzKC1agOQ8ABC6Bx26USA7Mw3gAAgI
				[file_size] => 1196
				[width] => 51
				[height] => 90
			)
			[1] => Array (
				[file_id] => AgttAgADUqoxG7u8OEudBvlhgMzKC1agOQ8ABKwp_3jDPrIlxHgAAgI
				[file_size] => 21146
				[width] => 180
				[height] => 320
			)
			[2] => Array (
				[file_id] => AgADAgADUqyxG7u8OEudBvlhgMzKC1agOQ8ABAN8gJWpUT1MxXgAAgI
				[file_size] => 90940
				[width] => 449
				[height] => 800
			)
			[3] => Array (
				[file_id] => AgADAgADUqouu7u8OEudBvlhgMzKC1agOQ8ABIqVC1nEpbLDwngAAgI
				[file_size] => 114363
				[width] => 719
				[height] => 1280
			)
		)
	)
)

Чтобы скачать файл нужно отправить POST или GET запрос на получение c параметром file_id изображения по URL:

https://api.telegram.org/bot<token>/getFile

В ответ придет информация о файле:

Array (
	[ok] => 1
	[result] => Array (
		[file_id] => AgADAgADUqoxG5u88E0dBvlhgMzKC1agOQ8ABIqVC1nEpbLDwngAAgI
		[file_size] => 114363
		[file_path] => photos/file_1.jpg
	)
)

Далее его можно скачать по ссылке:

https://api.telegram.org/file/bot<token>/<file_path>

В PHP сохранение файла на сервер можно реализовать следующим образом:

$token = '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11';

if (!empty($data['message']['photo'])) {
	$photo = array_pop($data['message']['photo']);
	
	$ch = curl_init('https://api.telegram.org/bot' . $token . '/getFile');  
	curl_setopt($ch, CURLOPT_POST, 1);  
	curl_setopt($ch, CURLOPT_POSTFIELDS, array('file_id' => $photo['file_id']));
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_HEADER, false);
	$res = curl_exec($ch);
	curl_close($ch);
	
	$res = json_decode($res, true);
	if ($res['ok']) {
		$src  = 'https://api.telegram.org/file/bot' . $token . '/' . $res['result']['file_path'];
		$dest = __DIR__ . '/' . time() . '-' . basename($src);
		copy($src, $dest);
	}
}

PHP

Документ

Запрос от Телеграм:

Array (
	[update_id] => 17474201
	[message] => Array (
		[message_id] => 44
		[from] => Array (
			[id] => 123456789
			[is_bot] => 
			[first_name] => UserName
			[language_code] => ru-US
		)
		[chat] => Array (
			[id] => 123456789
			[first_name] => UserName
			[type] => private
		)
		[date] => 1541925844
		[document] => Array (
			[file_name] => IMG_7947.JPG
			[mime_type] => image/jpeg
			[thumb] => Array (
					[file_id] => AAQCABMNv_QOAATwQugveIZBldZ3AAIC
					[file_size] => 2644
					[width] => 67
					[height] => 90
				)
			[file_id] => BQADAgADtQEAAqu9OEhzn2cEz8LpkgI
			[file_size] => 1976218
		)
	)
)

Скачивание файлов происходит по такой же схеме как у фотографий.

if (!empty($data['message']['document'])) {
	$file_id = $data['message']['document']['file_id'];
	
	$ch = curl_init('https://api.telegram.org/bot' . $token . '/getFile');  
	curl_setopt($ch, CURLOPT_POST, 1);  
	curl_setopt($ch, CURLOPT_POSTFIELDS, array('file_id' => $file_id));
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_HEADER, false);
	$res = curl_exec($ch);
	curl_close($ch);
	
	$res = json_decode($res, true);
	if ($res['ok']) {
		$src  = 'https://api.telegram.org/file/bot' . $token . '/' . $res['result']['file_path'];
		$dest = __DIR__ . '/' . time() . '-' . basename($src);
		copy($src, $dest);
	}
}

PHP

3

Ответы бота

Отправка текста

$response = array(
	'chat_id' => $data['message']['chat']['id'],
	'text' => 'Хай!'
);	
		
$ch = curl_init('https://api.telegram.org/bot' . $token . '/sendMessage');  
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_exec($ch);
curl_close($ch);

PHP

Отправка картинки

$response = array(
	'chat_id' => $data['message']['chat']['id'],
	'photo' => curl_file_create(__DIR__ . '/image.png')
);	
		
$ch = curl_init('https://api.telegram.org/bot' . $token . '/sendPhoto');  
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_exec($ch);
curl_close($ch);

PHP

Отправка файла

$response = array(
	'chat_id' => $data['message']['chat']['id'],
	'document' => curl_file_create(__DIR__ . '/file.xls')
);	
		
$ch = curl_init('https://api.telegram.org/bot' . $token . '/sendDocument');  
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_exec($ch);
curl_close($ch);

PHP

4

Пример скрипта

Скрипт простейшего бота @SnippRu. Он отвечает на вопросы и сохраняет файлы и изображение на сервере.

<?php

$data = file_get_contents('php://input');
$data = json_decode($data, true);

if (empty($data['message']['chat']['id'])) {
	exit();
}

define('TOKEN', '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11');

// Функция вызова методов API.
function sendTelegram($method, $response)
{
	$ch = curl_init('https://api.telegram.org/bot' . TOKEN . '/' . $method);  
	curl_setopt($ch, CURLOPT_POST, 1);  
	curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_HEADER, false);
	$res = curl_exec($ch);
	curl_close($ch);

	return $res;
}

// Прислали фото.
if (!empty($data['message']['photo'])) {
	$photo = array_pop($data['message']['photo']);
	$res = sendTelegram(
		'getFile', 
		array(
			'file_id' => $photo['file_id']
		)
	);
	
	$res = json_decode($res, true);
	if ($res['ok']) {
		$src = 'https://api.telegram.org/file/bot' . TOKEN . '/' . $res['result']['file_path'];
		$dest = __DIR__ . '/' . time() . '-' . basename($src);

		if (copy($src, $dest)) {
			sendTelegram(
				'sendMessage', 
				array(
					'chat_id' => $data['message']['chat']['id'],
					'text' => 'Фото сохранено'
				)
			);
			
		}
	}
	
	exit();	
}

// Прислали файл.
if (!empty($data['message']['document'])) {
	$res = sendTelegram(
		'getFile', 
		array(
			'file_id' => $data['message']['document']['file_id']
		)
	);
	
	$res = json_decode($res, true);
	if ($res['ok']) {
		$src = 'https://api.telegram.org/file/bot' . TOKEN . '/' . $res['result']['file_path'];
		$dest = __DIR__ . '/' . time() . '-' . $data['message']['document']['file_name'];

		if (copy($src, $dest)) {
			sendTelegram(
				'sendMessage', 
				array(
					'chat_id' => $data['message']['chat']['id'],
					'text' => 'Файл сохранён'
				)
			);	
		}
	}
	
	exit();	
}

// Ответ на текстовые сообщения.
if (!empty($data['message']['text'])) {
	$text = $data['message']['text'];

	if (mb_stripos($text, 'привет') !== false) {
		sendTelegram(
			'sendMessage', 
			array(
				'chat_id' => $data['message']['chat']['id'],
				'text' => 'Хай!'
			)
		);

		exit();	
	} 

	// Отправка фото.
	if (mb_stripos($text, 'фото') !== false) {
		sendTelegram(
			'sendPhoto', 
			array(
				'chat_id' => $data['message']['chat']['id'],
				'photo' => curl_file_create(__DIR__ . '/torin.jpg')
			)
		);
		
		exit();	
	}

	// Отправка файла.
	if (mb_stripos($text, 'файл') !== false) {
		sendTelegram(
			'sendDocument', 
			array(
				'chat_id' => $data['message']['chat']['id'],
				'document' => curl_file_create(__DIR__ . '/example.xls')
			)
		);

		exit();	
	}
}

PHP

Чем автоматизировать заполнение форм в браузере (создание ботов)

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

Селениум

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

Лично мне нравится модуль под язык программирования питон, хотя доступно и для других языков, а также автономная IDE для браузера firefox.
Установка для питона достаточно простая
С сайта seleniumhq.org загружаем Selenium Client Drivers для python, распаковываем и устанавливаем как обычно, для виндовс через файл setup.py -install
Пример программы на python

#!/usr/bin/env python 
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
 
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.yandex.ru") # Load page
assert "Яндекс".decode("utf-8") in browser.title
elem = browser.find_element_by_name("text") # Find the query box
elem.send_keys("http://программисту.рф/".decode("utf-8") + Keys.RETURN)
time.sleep(0.2) # Let the page load, will be added to the API

В данном примере запускается браузер Mozilla Firefox, скрипт переходит на страницу поиска яндекса. В строке поиска набирает название этого сайта программисту.рф и нажимает кнопку поиска.

Для тех кому нужна простая автоматизация, например просто выполнение типовых действий, лучше использовать дополение к браузеру firefox под названием Selenium IDE

Watin

Watin — это тоже не утеплитель, а инструмент тестирования. Фактически это портированная под .NET библиотека Watir для Ruby
Возможностей чуть меньше, как и количество поддерживаемых браузеров. Рабочим и протестированным является только “ослик” (internet iexplorer). Библиотеку Watin можно скачать с сайта watin.sourceforge.net
Из плюсов компонента достаточно точная имитация действия пользователя, например в поле происходит именно набор символов, а не присвоение значения.
Пример программы на C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WatiN.Core;
 
namespace ConsoleApplication1
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Windows
            WatiN.Core.IE window = new WatiN.Core.IE();
 
            // Frames
 
            // Model
            TextField txt_login = window.TextField(Find.ByName("login"));
            Element __ = window.Element(Find.ByText(""));
            TextField txt_passwd = window.TextField(Find.ByName("passwd"));
 
            // Code
            window.GoTo("http://mail.yandex.ru/");
            txt_login.Click();
            txt_login.TypeText("ваш логин");
            txt_passwd.Click();
            txt_passwd.TypeText("ваш пароль");
 
        }
    }
}

Данная программа открывает браузер Internet Iexplorer, в нем переходит на страницу почты яндекса и в нем вписывает логин и пароль. Вход сделаете сами, там не сложно, можно просто послать браузеру клавишу Enter.

Из особенностей программирования, профиль проекта должен быть обязательно просто Net, а не ClientProfile, иначе будет ошибка. И обязательно преобразование в тип STA, в данной программе сделано строкой [STAThread]

Понравилась статья? Поделить с друзьями:
  • Как написать боссу что заболел
  • Как написать босс на английском
  • Как написать бордовый или бардовый цвет правильно
  • Как написать бон аппетит на французском
  • Как написать бомж английскими буквами