wakeupneo
Пассажир
- Сообщения
- 20
- Реакции
- 23
Добрый день, уважаемые посетители форума Rutor.
Сегодня речь пойдёт о написании бота для Телеграм на PHP.
Краткая информация по боту:
1) Бот должен находиться на https домене.
2) У читателя, т.е. вас, должен быть хостинг или же vps сервер, тут кому как удобно.
Если же этого нет, то наш бот функционировать не будет.
Можно конечно заставить работать и на локальном сервере (на время разработки бота), но мы не будем пользоваться костылями.
Читающий статью человек должен уметь пользоваться ftp и ssh, так что, те, кто этого не знают, гугл в помощь.
Начнём!
1) Домен
Вам нужно определиться с доменным именем, выбрать зону его размещения, ну и естественно его приобрести. Сайт для покупки доменного имени:
Как только вы его приобрели, вам нужно будет подключить к нему SSL сертификат, нам в этом поможет Cloudflare. Он даёт возможность эмулировать HTTPS сертификат.
Рассмотрим сам процесс получения сертификата подробнее.
Вам необходимо будет зарегистрироваться на этом сайте:
Здесь требуется ввести email, пароли и поставить галочку, что мы ознакомились с правилами, далее нажать «Create Account». Потом стандартная схема, подтвердить почту, все дела.
После регистрации нажимайте на кнопку «Add Site».
Далее потребуется ввести доменное имя, которое вы приобрели, и нажать кнопку «Scan DNS Records».
Далее потребуется немного подождать, пока что посмотрите вступительный ролик о компании.
На следующей вкладке нам требуется ввести доменное имя, которое мы приобрели в поле «name» и прописать ip адрес сервера хостинга или VPS в поле «value», ах да, чуть не забыл сказать, всё это под типом «A». И сделать это нужно по аналогии с примером ниже.
Пример: A rutor.one 31.86.43.92
A
Говорю сразу, ip адреса вымышленные.
После этого выбираем «Free Website» и нажимаем «Continue».
После этого cloudflare попросит нас зайти в панель управления нашим доменным именем, это у нас reg.ru и указать в настройках доменного имени DNS сервера cloudflare.
Вот и всё, сайт добавлен, осталось подождать какое-то время, должна появиться полоска зеленая, означающая, что всё хорошо.
После этих действий нам нужно перейти в панели администрирования cloudflare во вкладку «Crypto». В пункте «SSL» установить значение «flexible». Прям как на скриншоте ниже:
Этот пункт эмулирует безопасное соединение для вашего сайта. Проверяйте по адресу:
Примечание: без этих действий бот работать не будет!
2) Бот для регистрации ботов – BotFather
Откройте телеграм и найдите его в строке поиска по адресу: @BotFather
Как только вы найдёте его и перейдете по ссылке, вы увидите краткое его описание и кнопку внизу «Начать». Нажмите на неё. Обработалась команда /start, появилось описание функционала бота (по командам). Там всё очень просто. Разберем подробнее.
Нам необходимо создать бота, для этого выбираем команду: /newbot.
Данный бот отправит нам сообщение «Alright, a new bot. How are we going to call it? Please choose a name for your bot», что означает «Дайте своему боту имя». Придумайте и напишите имя вашего бота.
После того, как вы введете имя и нажмете Enter, BotFather скажет нам «Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot», что означает «Дайте своему боту имя, которое заканчивается на bot. Пример: TetrisBot или tetris_bot». По этому имени вашего бота можно будет найти. Пример: @tetris_bot
После того, как вы укажете имя, заканчивающееся на bot, и нажмете Enter, BotFather скажет вам «Done! Congratulations on your new bot. You will find it at t.me/rutor_one_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
501604560:AAEOcP5Eq3ponseTssCrSA0wRx57Kxmo9vw
For a description of the Bot API, see this page:
Вот и всё, бот создан, в строке «Use this token to access the HTTP API:» указан наш токен, именно он и свяжет нашего бота с хостингом или VPS сервером.
Примечание: Токен, что выше, идёт как пример, он недействителен.
Сохраните ваш токен от бота куда-то в текстовый документ, чтобы не потерять его.
Теперь нам необходимо в BotFather ввести команду /setprivacy, этой командой мы отключим приватный режим, это нужно для того, чтобы бот наш был интерактивный. Вводите в строку данную команду, потом выбирайте вашего бота из списка и вводите в строку «disabled», всё, приват режим выключен.
Я не буду расписывать весь функционал BotFather, там всё и так понятно по командам. Дальше вам будет необходимо задать описание краткое для вашего бота и задать аватар, что можно сделать через BotFather.
А мы переходим к следующему пункту, а именно:
3) Среда разработки
В качестве библиотеки для обращения к API, мы будем использовать:
Пояснения по API:
Предположу, что не каждый из вас будет использовать VPS сервер, кто-то будет использовать такой хост, где нет возможности использовать SSH, где будет только FTP соединение, что не очень нам подходит для некоторых действий.
Поэтому нам на помощь приходит программа под названием XAMPP. Ссылка на скачивание:
В нём есть всё, что нам необходимо для работы. Это и Apache, и MySQL, и самое главное – это SSH соединение с локальным сервером, чуть позже поймёте для чего это нужно.
Предположим, что вы его уже установили. Процесс установки там стандартный, как и везде практически (Далее, далее, готово), поэтому его я рассматривать не буду.
Запускайте программу. Вот, что мы видим:
Apache и MySQL я уже запустил, вам же нужно их запустить. Запустили. Теперь переходим в проводнике по такому пути: C:\xampp\htdocs
Создаём в папке htdocs папку для нашего бота, к примеру: telebot.
Создали.
Запускаем программу под названием shell, он же аналог в XAMPP’е SSH. Вот, что мы видим после запуска:
Вводим в строку:
cd C:\xampp\htdocs\telebot
и нажимаем Enter. Мы перешли с помощью команды cd в папку telebot.
А вот теперь мы будем устанавливать Composer. Можно конечно и вручную ставить библиотеку, но это тот ещё гемор. С помощью composer гораздо быстрее.
Вводите в строку поочередно команды:
1) php -r "copy('
2) php composer-setup.php
3) php -r "unlink('composer-setup.php');"
Просто скопируйте их и вставьте по очереди в окно.
После этого там же пишите команду:
php composer.phar require telegram-bot/api
После чего переходим в проводнике по пути: C:\xampp\htdocs\telebot и проверяем, какие файлы создались.
Вот, что должно быть. Переходим к следующему этапу.
4) Само написание бота
Мы остановились с вами на том, что создали папку «telebot», где располагается всё для написания нашего бота. Подключаемся по FTP к нашему хостингу или VPS серверу. Как подключаться по FTP я писать не буду, кто не знает, гугл в помощь.
Подключились. Теперь перекидывайте всё из папки «telebot» на ваш хост. Далее создайте текстовый документ на хосте и назовите его «index», а расширение «txt» измените на «php», пример: index.php.
Будем считать, что дело сделано.
Ах да, кодировку файла index.php лучше установить такую: utf-8 без bom. Поможет вам в этом текстовый редактор – notepad++. Ссылка на скачивание:
Совет: установите данный текстовый редактор, с ним гораздо удобнее работать, чем просто через блокнот.
Открывает файл index.php для редактирования. Начинаем писать код.
Пишем:
<?php
header('Content-Type: text/html; charset=utf-8'); // подрубаем API require_once("vendor/autoload.php"); // создаем переменную бота
$token = "ваш токен, мы его выше сохраняли в текстовый файл";
$bot = new \TelegramBot\Api\Client($token);
?>
После того, как переменная бота создана, мы можем обращаться к api, но сначала нам надо зарегистрировать webhook.
Что такое webhook? Это такой механизм, по которому выполняется связка бота с telegram’ом. Когда пользователь в телеграме вводит команду, ее надо как-то передать на сервер и получить ответ. Webhook как раз это и делает — указывает телеграму, куда передавать команду пользователя. Но так как изначально телеграм НЕ ЗНАЕТ, где мы разместили нашего бота, то надо ему об этом обязательно сообщить.
Для этого у нас есть команда: $bot->setWebhook
Продолжаем писать код:
<?php
…
// если бот еще не зарегистрирован - регистрируем 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, значит телеграм теперь знает о том, где находится наш бот.
А перейти можно по адресу:
Ну вот, бот функционирует, но у него нет мозгов. Исправим это, добавим немного команд. Продолжаем наполнять файл index.php.
<?php
…
// обязательное. Запуск бота
$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();
?>
Протестируем:
Работает))
Разберем теперь, как работает наша библиотека совсем кратко, ибо статья уже и так получилась объёмная.
Команды задаются блоком:
$bot->command('start', function ($message) use ($bot) {
});
Отправка сообщений выполняется командой:
$bot->sendMessage();
Отправка картинок:
Отправка картинок пользователю выполняется через передачу телеграму ссылки на эту картинку.
// передаем картинку
$bot->command('getpic', function ($message) use ($bot) {
$pic = "
$bot->sendPhoto($message->getChat()->getId(), $pic);
});
Отправка документа:
Документы, в отличие от картинок, на сервер телеграма надо оправлять в POST формате.
Пример: для начала документ надо загрузить в папку с ботом.
После чего добавить в код вот такую команду:
// передаем документ
$bot->command('getdoc', function ($message) use ($bot) {
$document = new \CURLFile('наш_документ.txt');
$bot->sendDocument($message->getChat()->getId(), $document);
});
На этом мы пожалуй закончим)
Если вам понравилась данная статья и вы хотите продолжения, пишите в комментариях)
Спасибо за внимание)))
Сегодня речь пойдёт о написании бота для Телеграм на PHP.
Краткая информация по боту:
1) Бот должен находиться на https домене.
2) У читателя, т.е. вас, должен быть хостинг или же vps сервер, тут кому как удобно.
Если же этого нет, то наш бот функционировать не будет.
Можно конечно заставить работать и на локальном сервере (на время разработки бота), но мы не будем пользоваться костылями.
Читающий статью человек должен уметь пользоваться ftp и ssh, так что, те, кто этого не знают, гугл в помощь.
Начнём!
1) Домен
Вам нужно определиться с доменным именем, выбрать зону его размещения, ну и естественно его приобрести. Сайт для покупки доменного имени:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Как только вы его приобрели, вам нужно будет подключить к нему SSL сертификат, нам в этом поможет Cloudflare. Он даёт возможность эмулировать HTTPS сертификат.
Рассмотрим сам процесс получения сертификата подробнее.
Вам необходимо будет зарегистрироваться на этом сайте:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Здесь требуется ввести email, пароли и поставить галочку, что мы ознакомились с правилами, далее нажать «Create Account». Потом стандартная схема, подтвердить почту, все дела.
После регистрации нажимайте на кнопку «Add Site».
Далее потребуется ввести доменное имя, которое вы приобрели, и нажать кнопку «Scan DNS Records».
Далее потребуется немного подождать, пока что посмотрите вступительный ролик о компании.
На следующей вкладке нам требуется ввести доменное имя, которое мы приобрели в поле «name» и прописать ip адрес сервера хостинга или VPS в поле «value», ах да, чуть не забыл сказать, всё это под типом «A». И сделать это нужно по аналогии с примером ниже.
Пример: A rutor.one 31.86.43.92
A
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
31.86.43.92Говорю сразу, ip адреса вымышленные.
После этого выбираем «Free Website» и нажимаем «Continue».
После этого cloudflare попросит нас зайти в панель управления нашим доменным именем, это у нас reg.ru и указать в настройках доменного имени DNS сервера cloudflare.
Вот и всё, сайт добавлен, осталось подождать какое-то время, должна появиться полоска зеленая, означающая, что всё хорошо.
После этих действий нам нужно перейти в панели администрирования cloudflare во вкладку «Crypto». В пункте «SSL» установить значение «flexible». Прям как на скриншоте ниже:
Этот пункт эмулирует безопасное соединение для вашего сайта. Проверяйте по адресу:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
_имя/Примечание: без этих действий бот работать не будет!
2) Бот для регистрации ботов – BotFather
Откройте телеграм и найдите его в строке поиска по адресу: @BotFather
Как только вы найдёте его и перейдете по ссылке, вы увидите краткое его описание и кнопку внизу «Начать». Нажмите на неё. Обработалась команда /start, появилось описание функционала бота (по командам). Там всё очень просто. Разберем подробнее.
Нам необходимо создать бота, для этого выбираем команду: /newbot.
Данный бот отправит нам сообщение «Alright, a new bot. How are we going to call it? Please choose a name for your bot», что означает «Дайте своему боту имя». Придумайте и напишите имя вашего бота.
После того, как вы введете имя и нажмете Enter, BotFather скажет нам «Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot», что означает «Дайте своему боту имя, которое заканчивается на bot. Пример: TetrisBot или tetris_bot». По этому имени вашего бота можно будет найти. Пример: @tetris_bot
После того, как вы укажете имя, заканчивающееся на bot, и нажмете Enter, BotFather скажет вам «Done! Congratulations on your new bot. You will find it at t.me/rutor_one_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
501604560:AAEOcP5Eq3ponseTssCrSA0wRx57Kxmo9vw
For a description of the Bot API, see this page:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
.Вот и всё, бот создан, в строке «Use this token to access the HTTP API:» указан наш токен, именно он и свяжет нашего бота с хостингом или VPS сервером.
Примечание: Токен, что выше, идёт как пример, он недействителен.
Сохраните ваш токен от бота куда-то в текстовый документ, чтобы не потерять его.
Теперь нам необходимо в BotFather ввести команду /setprivacy, этой командой мы отключим приватный режим, это нужно для того, чтобы бот наш был интерактивный. Вводите в строку данную команду, потом выбирайте вашего бота из списка и вводите в строку «disabled», всё, приват режим выключен.
Я не буду расписывать весь функционал BotFather, там всё и так понятно по командам. Дальше вам будет необходимо задать описание краткое для вашего бота и задать аватар, что можно сделать через BotFather.
А мы переходим к следующему пункту, а именно:
3) Среда разработки
В качестве библиотеки для обращения к API, мы будем использовать:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Пояснения по API:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Предположу, что не каждый из вас будет использовать VPS сервер, кто-то будет использовать такой хост, где нет возможности использовать SSH, где будет только FTP соединение, что не очень нам подходит для некоторых действий.
Поэтому нам на помощь приходит программа под названием XAMPP. Ссылка на скачивание:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
В нём есть всё, что нам необходимо для работы. Это и Apache, и MySQL, и самое главное – это SSH соединение с локальным сервером, чуть позже поймёте для чего это нужно.
Предположим, что вы его уже установили. Процесс установки там стандартный, как и везде практически (Далее, далее, готово), поэтому его я рассматривать не буду.
Запускайте программу. Вот, что мы видим:
Apache и MySQL я уже запустил, вам же нужно их запустить. Запустили. Теперь переходим в проводнике по такому пути: C:\xampp\htdocs
Создаём в папке htdocs папку для нашего бота, к примеру: telebot.
Создали.
Запускаем программу под названием shell, он же аналог в XAMPP’е SSH. Вот, что мы видим после запуска:
Вводим в строку:
cd C:\xampp\htdocs\telebot
и нажимаем Enter. Мы перешли с помощью команды cd в папку telebot.
А вот теперь мы будем устанавливать Composer. Можно конечно и вручную ставить библиотеку, но это тот ещё гемор. С помощью composer гораздо быстрее.
Вводите в строку поочередно команды:
1) php -r "copy('
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
', 'composer-setup.php');"2) php composer-setup.php
3) php -r "unlink('composer-setup.php');"
Просто скопируйте их и вставьте по очереди в окно.
После этого там же пишите команду:
php composer.phar require telegram-bot/api
После чего переходим в проводнике по пути: C:\xampp\htdocs\telebot и проверяем, какие файлы создались.
Вот, что должно быть. Переходим к следующему этапу.
4) Само написание бота
Мы остановились с вами на том, что создали папку «telebot», где располагается всё для написания нашего бота. Подключаемся по FTP к нашему хостингу или VPS серверу. Как подключаться по FTP я писать не буду, кто не знает, гугл в помощь.
Подключились. Теперь перекидывайте всё из папки «telebot» на ваш хост. Далее создайте текстовый документ на хосте и назовите его «index», а расширение «txt» измените на «php», пример: index.php.
Будем считать, что дело сделано.
Ах да, кодировку файла index.php лучше установить такую: utf-8 без bom. Поможет вам в этом текстовый редактор – notepad++. Ссылка на скачивание:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Совет: установите данный текстовый редактор, с ним гораздо удобнее работать, чем просто через блокнот.
Открывает файл index.php для редактирования. Начинаем писать код.
Пишем:
<?php
header('Content-Type: text/html; charset=utf-8'); // подрубаем API require_once("vendor/autoload.php"); // создаем переменную бота
$token = "ваш токен, мы его выше сохраняли в текстовый файл";
$bot = new \TelegramBot\Api\Client($token);
?>
После того, как переменная бота создана, мы можем обращаться к api, но сначала нам надо зарегистрировать webhook.
Что такое webhook? Это такой механизм, по которому выполняется связка бота с telegram’ом. Когда пользователь в телеграме вводит команду, ее надо как-то передать на сервер и получить ответ. Webhook как раз это и делает — указывает телеграму, куда передавать команду пользователя. Но так как изначально телеграм НЕ ЗНАЕТ, где мы разместили нашего бота, то надо ему об этом обязательно сообщить.
Для этого у нас есть команда: $bot->setWebhook
Продолжаем писать код:
<?php
…
// если бот еще не зарегистрирован - регистрируем 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, значит телеграм теперь знает о том, где находится наш бот.
А перейти можно по адресу:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Ну вот, бот функционирует, но у него нет мозгов. Исправим это, добавим немного команд. Продолжаем наполнять файл index.php.
<?php
…
// обязательное. Запуск бота
$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();
?>
Протестируем:
Работает))
Разберем теперь, как работает наша библиотека совсем кратко, ибо статья уже и так получилась объёмная.
Команды задаются блоком:
$bot->command('start', function ($message) use ($bot) {
});
Отправка сообщений выполняется командой:
$bot->sendMessage();
Отправка картинок:
Отправка картинок пользователю выполняется через передачу телеграму ссылки на эту картинку.
// передаем картинку
$bot->command('getpic', function ($message) use ($bot) {
$pic = "
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
";$bot->sendPhoto($message->getChat()->getId(), $pic);
});
Отправка документа:
Документы, в отличие от картинок, на сервер телеграма надо оправлять в POST формате.
Пример: для начала документ надо загрузить в папку с ботом.
После чего добавить в код вот такую команду:
// передаем документ
$bot->command('getdoc', function ($message) use ($bot) {
$document = new \CURLFile('наш_документ.txt');
$bot->sendDocument($message->getChat()->getId(), $document);
});
На этом мы пожалуй закончим)
Если вам понравилась данная статья и вы хотите продолжения, пишите в комментариях)
Спасибо за внимание)))
Вложения
-
1.png114.8 КБ · Просмотры: 216 -
2.png9.9 КБ · Просмотры: 206 -
3.png92.4 КБ · Просмотры: 210 -
4.png37.8 КБ · Просмотры: 206 -
5.png83.1 КБ · Просмотры: 213 -
6.png61.1 КБ · Просмотры: 205 -
7.png110 КБ · Просмотры: 202 -
8.png81.2 КБ · Просмотры: 206 -
9.png31.1 КБ · Просмотры: 197 -
10.png7.1 КБ · Просмотры: 200 -
11.png88.5 КБ · Просмотры: 193 -
12.png102.8 КБ · Просмотры: 200 -
13.png110.8 КБ · Просмотры: 191 -
14.png11 КБ · Просмотры: 198 -
15.png28.4 КБ · Просмотры: 192 -
16.png6.3 КБ · Просмотры: 191 -
17.png7.6 КБ · Просмотры: 190
Последнее редактирование: