slot gacor situs judi slot online situs togel online Toto Macau 4D slot gacor 10k togel hongkong HK situs togel toto slot Situs Togel Toto Terpercaya Situs Toto togel 4D Bandar Togel Terpercaya situs togel macau Toto Togel slot 4D judi slot online situs judi slot gacor Toto Togel 4D situs toto togel 4D Situs Toto Togel Togel Macau 4D togel 4D terlengkap

Warning: Cannot modify header information - headers already sent by (output started at /var/www/u1226337/data/www/djdiplomat.ru/wp-blog-header.php:1) in /var/www/u1226337/data/www/djdiplomat.ru/wp-content/plugins/clearfy-pro/clearfy-pro.php on line 1690

Warning: Cannot modify header information - headers already sent by (output started at /var/www/u1226337/data/www/djdiplomat.ru/wp-blog-header.php:1) in /var/www/u1226337/data/www/djdiplomat.ru/wp-content/plugins/clearfy-pro/clearfy-pro.php on line 1691
Как создать Телеграм бот на php (инструкция) | Обозреватель социальных сетей

Как создать Телеграм бот на php (инструкция)

В прошлый раз мы разбирали более простой способ создания бота для телеграмм, который не требовал знаний программирования т.к. использовал сторонний сервис и визуальный конструктор. Сегодня предлагаю поднять планку и поговорить о том, как написать бота для Телеграм на php (это язык программирования). Если вы не программист, то материал ниже будет вам непонятен, поэтому советую прочитать другую статью. Итак, начнем.

Подготовка к написанию бота

Прежде чем мы приступим к написанию бота, убедимся, что у нас имеется в распоряжении хостинг и домен с https, а также API токен, который нам выдал Botfather (подробнее о том, как получить API ключ для Телеграмм бота см. тут).

Обращаться к API Телеграма будем при помощи TelegramBotApi. Соответственно, чтобы клонировать проект с Гитхаба нам понадобиться Composer. Composer как правило не устанавливается без файла php.exe. Самый просто способ это исправить – установить Open Server.

Клонирование проекта с Гитхаба

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

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Далее устанавливаем telegram-bot/api

php composer.phar require telegram-bot/api

Клонируем проект с гита

Заходим в папку и убеждаемся, что все файлы успешно установлены.

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

Кодинг Telegram бота на php

В папке с ботом создадим файл index.php в котором мы и будем писать код нашего бота. Важно! Кодировка файла — utf-8 без bom!

header('Content-Type: text/html; charset=utf-8');
// подключаемся к API
require_once("vendor/autoload.php");
// создаем переменную бота
$token = "токен, который выдал BotFather";
$bot = new \TelegramBot\Api\Client($token);

После того как мы создали переменную бота $bot, мы можем обращаться к api, но прежде нам необходимо зарегистрировать webhook.

Что такое webhook?

WebHook – это механизм по которому выполняется связка бота с telegram’ом. Когда пользователь в телеграме вводит команду, ее надо каким-то образом передавать на сервер и получать ответ. Webhook как раз для этого и нужен. Он сообщает телеграму куда передавать команды. Поскольку Телеграм НЕ ЗНАЕТ, где именно расположен код нашего бота, то нам нужно это исправить.

Для этой цели у нас существует команда: $bot->setWebhook

// если бот еще не зарегистрирован - регистрируем
if(!file_exists("registered.trigger")){
/**
* файл registered.trigger будет создаваться после регистрации бота.
* если этого файла нет существует, значит бот не
* зарегистрирован в Телеграмм
*/
// URl текущей страницы
$page_url = "https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
$result = $bot->setWebhook($page_url);
if($result){
file_put_contents("registered.trigger",time()); // создаем файл дабы остановить повторные регистрации
}
}

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

registered.trigger

Обязательные команды для ботов

Теперь необходимо научить нашего бота реагировать на обязательные для всех ботов команды /start и /help.

// обязательное. Запуск бота
$bot->command('start', function ($message) use ($bot) {
$answer = 'Добро пожаловать!';
$bot->sendMessage($message->getChat()->getId(), $answer);
});
// помощь
$bot->command('help', function ($message) use ($bot) {
$answer = 'Команды:
/help - помощь';
$bot->sendMessage($message->getChat()->getId(), $answer);
});
// запускаем обработку
$bot->run();

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

Принцип работы библиотеки TelegramBotApi

Команды задаются блоком:

$bot->command('start', function ($message) use ($bot) {
});

Где $message — объект Message, все его поля можно посмотреть тут — Types/Message.php

Все команды должны быть до вызова $bot->run();, а иначе не будет работать. Т.е. $bot->run();должен замыкать наш код.

Отправка сообщения в TelegramBot API

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

$bot->sendMessage(id пользователя которому отправляем, текст сообщения);

Отправка картинок в TelegramBot API

Отправка картинок осуществляется через передачу Телеграмму ссылки на эту картинку. Мессенджер самостоятельно скачивает изображение и отдает пользователю! Для примера отправим юзеру картинку если он введет команду /getpic.
// передаем картинку
$bot->command('getpic', function ($message) use ($bot) {
$pic = "http://binetmed15.beget.tech/wp-content/uploads/forbot.jpg";
$bot->sendPhoto($message->getChat()->getId(), $pic);
});

Отправка документов и голосовых сообщений

Документы, в отличие от картинок необходимо оправлять ввиде POST. К счастью, библиотека  TelegramBotApi сделает все что нужно без нашего с вами участия. Сначала загрузим документ в папку с нашим ботом (см картинку ниже)

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

// передаем документ
$bot->command('getdoc', function ($message) use ($bot) {
$document = new \CURLFile('sendfrombot.txt');
$bot->sendDocument($message->getChat()->getId(), $document);
});

Обратите внимание, что строчка

$document = new \CURLFile('sendfrombot.txt');

предполагает размещение txt-файла sendfrombot в в корневой папке бота. Однако, можно передавать в переменную и обычный урл. С передачей голосовых сообщения (войсов) ситуация аналогична:

// передаем войс
$bot->command('getvoice', function ($message) use ($bot) {
$voice = "http://binetmed15.beget.tech/wp-content/uploads/glazunov_maxim-prividenie.mp3";
$bot->sendVoice(
$message->getChat()->getId(),
$voice //,
//$duration,
//$replyToMessageId,
//$replyMarkup,
//$disableNotification
);
});

Получение сообщений из чата

Для получения данных из чата в API имеется команда .on(). С ее помощью мы можем прикрутить к нашему телеграм-боту, нейросеть для анализа сообщений или соорудитеь простенькую болталку по алгоритму Маркова, для отправки случайных сообщений в ответ на месенджы пользователя. Выглядеть  это может примерно так:

// болталка
$bot->on(function($Update) use ($bot){
$message = $Update->getMessage();
$mtext = $message->getText();
$cid = $message->getChat()->getId();
if(mb_stripos($mtext,"привет бот") !== false){
$bot->sendMessage($message->getChat()->getId(), "и тебе здорова, чувак!");
}
}, function($message) use ($name){
return true; // когда тут true - команда проходит
});

Сообщаем Botfather-у список наших команд

После того как команды прописаны необходимо сообщить Botfather’у  об их наличии (строго говоря это не является обязательным, но желательно все же добавить). Открываем чат с Botfather и вбиваем /setcommands (в случае опечатки используем команду /setcommands для переопределения).

Теперь потестим нашего телеграм-бота.

Тестируем своего бота для Телеграмм

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

Скачать исходники php-бота.

Читать другие материалы в рубрике: Маркетологам

ОЦЕНИТЕ СТАТЬЮ:

Рейтинг:

ПОЛЕЗНО? СДЕЛАЙ РЕПОСТ!


2018-03-19 | | нет комментариев | , ,

Альтернативный заголовок изображения

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *