Telegram Bot на PHP

Статус
В этой теме нельзя размещать новые ответы.

wakeupneo

Пассажир
Сообщения
20
Реакции
23
Добрый день, уважаемые посетители форума Rutor.

Сегодня речь пойдёт о написании бота для Телеграм на PHP.

Краткая информация по боту:

1) Бот должен находиться на https домене.

2) У читателя, т.е. вас, должен быть хостинг или же vps сервер, тут кому как удобно.

Если же этого нет, то наш бот функционировать не будет.

Можно конечно заставить работать и на локальном сервере (на время разработки бота), но мы не будем пользоваться костылями.

Читающий статью человек должен уметь пользоваться ftp и ssh, так что, те, кто этого не знают, гугл в помощь.

Начнём!

1) Домен

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

Как только вы его приобрели, вам нужно будет подключить к нему SSL сертификат, нам в этом поможет Cloudflare. Он даёт возможность эмулировать HTTPS сертификат.

Рассмотрим сам процесс получения сертификата подробнее.

Вам необходимо будет зарегистрироваться на этом сайте:

1-png.8889


2-png.8890


Здесь требуется ввести email, пароли и поставить галочку, что мы ознакомились с правилами, далее нажать «Create Account». Потом стандартная схема, подтвердить почту, все дела.

После регистрации нажимайте на кнопку «Add Site».

3-png.8891


Далее потребуется ввести доменное имя, которое вы приобрели, и нажать кнопку «Scan DNS Records».

4-png.8892


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

5-png.8893


На следующей вкладке нам требуется ввести доменное имя, которое мы приобрели в поле «name» и прописать ip адрес сервера хостинга или VPS в поле «value», ах да, чуть не забыл сказать, всё это под типом «A». И сделать это нужно по аналогии с примером ниже.

Пример: A rutor.one 31.86.43.92

A 31.86.43.92

Говорю сразу, ip адреса вымышленные.

6-png.8894


После этого выбираем «Free Website» и нажимаем «Continue».

После этого cloudflare попросит нас зайти в панель управления нашим доменным именем, это у нас reg.ru и указать в настройках доменного имени DNS сервера cloudflare.

7-png.8895


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

После этих действий нам нужно перейти в панели администрирования cloudflare во вкладку «Crypto». В пункте «SSL» установить значение «flexible». Прям как на скриншоте ниже:

8-png.8896


Этот пункт эмулирует безопасное соединение для вашего сайта. Проверяйте по адресу: _имя/

Примечание: без этих действий бот работать не будет!

2) Бот для регистрации ботов – BotFather

Откройте телеграм и найдите его в строке поиска по адресу: @BotFather

Как только вы найдёте его и перейдете по ссылке, вы увидите краткое его описание и кнопку внизу «Начать». Нажмите на неё. Обработалась команда /start, появилось описание функционала бота (по командам). Там всё очень просто. Разберем подробнее.

9-png.8897


Нам необходимо создать бота, для этого выбираем команду: /newbot.

Данный бот отправит нам сообщение «Alright, a new bot. How are we going to call it? Please choose a name for your bot», что означает «Дайте своему боту имя». Придумайте и напишите имя вашего бота.

10-png.8898


После того, как вы введете имя и нажмете 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», всё, приват режим выключен.

11-png.8899


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

А мы переходим к следующему пункту, а именно:

3) Среда разработки

В качестве библиотеки для обращения к API, мы будем использовать:

Пояснения по API:

Предположу, что не каждый из вас будет использовать VPS сервер, кто-то будет использовать такой хост, где нет возможности использовать SSH, где будет только FTP соединение, что не очень нам подходит для некоторых действий.

Поэтому нам на помощь приходит программа под названием XAMPP. Ссылка на скачивание:

В нём есть всё, что нам необходимо для работы. Это и Apache, и MySQL, и самое главное – это SSH соединение с локальным сервером, чуть позже поймёте для чего это нужно.

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

Запускайте программу. Вот, что мы видим:

12-png.8900


Apache и MySQL я уже запустил, вам же нужно их запустить. Запустили. Теперь переходим в проводнике по такому пути: C:\xampp\htdocs

Создаём в папке htdocs папку для нашего бота, к примеру: telebot.

Создали.

13-png.8901


Запускаем программу под названием shell, он же аналог в XAMPP’е SSH. Вот, что мы видим после запуска:

14-png.8902


Вводим в строку:

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 и проверяем, какие файлы создались.

15-png.8903


Вот, что должно быть. Переходим к следующему этапу.

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, значит телеграм теперь знает о том, где находится наш бот.

А перейти можно по адресу:

16-png.8904


Ну вот, бот функционирует, но у него нет мозгов. Исправим это, добавим немного команд. Продолжаем наполнять файл 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();

?>

Протестируем:

17-png.8905


Работает))

Разберем теперь, как работает наша библиотека совсем кратко, ибо статья уже и так получилась объёмная.

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

$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.png
    1.png
    114.8 КБ · Просмотры: 216
  • 2.png
    2.png
    9.9 КБ · Просмотры: 206
  • 3.png
    3.png
    92.4 КБ · Просмотры: 210
  • 4.png
    4.png
    37.8 КБ · Просмотры: 206
  • 5.png
    5.png
    83.1 КБ · Просмотры: 213
  • 6.png
    6.png
    61.1 КБ · Просмотры: 205
  • 7.png
    7.png
    110 КБ · Просмотры: 202
  • 8.png
    8.png
    81.2 КБ · Просмотры: 206
  • 9.png
    9.png
    31.1 КБ · Просмотры: 197
  • 10.png
    10.png
    7.1 КБ · Просмотры: 200
  • 11.png
    11.png
    88.5 КБ · Просмотры: 193
  • 12.png
    12.png
    102.8 КБ · Просмотры: 200
  • 13.png
    13.png
    110.8 КБ · Просмотры: 191
  • 14.png
    14.png
    11 КБ · Просмотры: 198
  • 15.png
    15.png
    28.4 КБ · Просмотры: 192
  • 16.png
    16.png
    6.3 КБ · Просмотры: 191
  • 17.png
    17.png
    7.6 КБ · Просмотры: 190
Последнее редактирование:
Интересная, конечно, информация, но этих ботов уже развелось не одна сотня, и можно найти или купить почти с любым функционалом, а создавать велосипед да ещё и кривой т.к. мы не Тру программисты, лишняя трата времени, когда можно воспользоваться качественным готовым продуктом...
 
Интересная, конечно, информация, но этих ботов уже развелось не одна сотня, и можно найти или купить почти с любым функционалом, а создавать велосипед да ещё и кривой т.к. мы не Тру программисты, лишняя трата времени, когда можно воспользоваться качественным готовым продуктом...

Статья написана для ознакомления, может кто-то из вас захочет написать сам бота, а не покупать его. Готовый продукт - это конечно круто, очень удобно... но как правило - это не то, что нужно) Можно конечно найти классного исполнителя, кто сделает вам то, что вы хотите, и это опять же будет готовым продуктом, бери да пользуйся, но повторюсь, найдутся 1-2 человека из 100, кто сделает сам)) Поправьте меня, если я в чём-то ошибаюсь)
 
Статья написана для ознакомления, может кто-то из вас захочет написать сам бота, а не покупать его. Готовый продукт - это конечно круто, очень удобно... но как правило - это не то, что нужно) Можно конечно найти классного исполнителя, кто сделает вам то, что вы хотите, и это опять же будет готовым продуктом, бери да пользуйся, но повторюсь, найдутся 1-2 человека из 100, кто сделает сам)) Поправьте меня, если я в чём-то ошибаюсь)
привет. я хочу попробовать. в onion нельзя хостинг под него делать? https только?
 
Последнее редактирование модератором:
Ты на onion ssl сертификат не привяжешь, придется так и так покупать нормальный домен. Можно будет прикупить vps сервер и пустить трафик через тор, а потом уже настроить lamp и все дела.
 
Ты на onion ssl сертификат не привяжешь, придется так и так покупать нормальный домен. Можно будет прикупить vps сервер и пустить трафик через тор, а потом уже настроить lamp и все дела.
а как делают наркоботов? или у них просто админка в торе?
 
Ну тут вариантов больше, чем два. При написании бота можно проверять всё вручную, а можно через webhook, мы вот проверяли через webhook, а для него нужен ssl сертификт. Можго заставить бота функционировать почти на любом языке программирования и без ssl сертификата, но это надо изобретать костыли. Я пробовал писать бота и на C#, потом на Python, далее на PHP, ещё видел как пишут на Java. По твоему вопросу надо подумать, если интересно, накидаю ещё статью, где постараюсь рассказать подробно по твоему вопросу.
 
Ну тут вариантов больше, чем два. При написании бота можно проверять всё вручную, а можно через webhook, мы вот проверяли через webhook, а для него нужен ssl сертификт. Можго заставить бота функционировать почти на любом языке программирования и без ssl сертификата, но это надо изобретать костыли. Я пробовал писать бота и на C#, потом на Python, далее на PHP, ещё видел как пишут на Java. По твоему вопросу надо подумать, если интересно, накидаю ещё статью, где постараюсь рассказать подробно по твоему вопросу.
если не трудно - думаю не только мне будет интресна именно вот такая схема - сам бот в телеге а его админка в онион домене - так как почти все наркоботы по такой схеме. тот же botshop с legalrc так делает. если сделать такой же самому думаю появятся идеи как его можно попробовать поковырять.
 
Почему используете пхп, разве си не проще?
 
Статус
В этой теме нельзя размещать новые ответы.

Похожие темы

Многие задумываются об анонимности в телеграмм. Стандартный аккаунт привязан к номеру телефона и имеет айди — это уже страшная уязвимость, если вы хотите оставаться неузнаваемым. Существуют куча осинт инструментов по вычислению айди, телефона пользователя и любой другой информации (это не...
Ответы
0
Просмотры
188
Admin TG Bot — Фейк-система для управления товарами в Telegram Привет! Я разработал систему, которая может работать как самостоятельный бот или как зеркало для любых существующих ботов. Проще говоря — это универсальный инструмент для управления заказами и платежами. Что это такое? Telegram бот...
Ответы
7
Просмотры
Лёгкий, быстрый и доступный способ познакомиться с миром ботостроения в Telegram. Видео, конспекты, практика и помощь – всё у нас на курсе. Ботостроение в Telegram Курс по взаимодействию с Telegram Bot API с помощью фреймворка aiogram 3 написанный на языке Python на примере проекта с ИИ OpenAI...
Ответы
0
Просмотры
483
Начните зарабатывать на создании автономных агентов на Python, работающих на основе искусственного интеллекта. AI будет работать именно на вас Курс рекомендован: Бизнесменам и манимейкерам Если вы не можете позволить себе нанять команду менеджеров, маркетологов, аналитиков и программистов, то...
Ответы
1
Просмотры
630
Здравствуйте. Редко участвую в конкурсах, однако вот. Решил расписать вам технологию изготовления мной, специального решения автопродаж. Написано с нуля, и решает все основные вопросы, которые нужны для подобного типа решений.Это будут бот(ы) для телеграм и удобная веб админка для управления...
Ответы
15
Просмотры
Назад
Сверху Снизу