Источник: qqqqqqqqqqq.ru
Из чего состоит Telegram Бот
И так приступим: из чего же состоит любой Telegram бот?
Telegram бот можно сравнивать с клиент-серверным приложением.
Т.е у него есть клиентская часть, в роли которой выступает само приложение Telegram. Клиент – это то, с чем работает обычный пользователь. То, что он видит открывая любой чат в Telegram: список сообщений, кнопки, форма для ввода текста, клавиатура и т.д Это все клиент.
Серверная часть – это то, что с чем будем работать мы. Это так называемый «мозг» телеграм-бота. Это то, что будет обрабатывать команды пользователя. Для этого мы арендуем настоящий сервер, бесплатный в рамках обучения. Ведь как я и говорил, все что нам потребуется для разработки – только наша голова…и браузер 😉 Сразу оговорюсь, серверную часть мы будем писать на языке php, и использовать базы данных MySQL
Принцип работы Telegram ботов
Очень грубо работу бота можно разделить на 4 этапа.
- Пользователь пишет боту в телеграм любое сообщение/команду
- Telegram принимает запрос
- Дублирует этот запрос на наш сервер
Таким образом наш сервер получает все данные не напрямую от пользователя, а через сервера Telegram. Мы будем получать вообще все данные: время сообщения, от кого оно пришло, к кому, текст сообщения, вложения, юзернейм и имя.
4. Наш сервер, на котором будет размещен наш бот, получает запрос от Telegram и обрабатывает данные (по описанной нами логике), затем формирует ответ, и отправляет команду в telegram.
Он говорит ему что-то вроде эй, чувак, мне нужно отправить пользователю текст/картинку/ документ. Telegram в свою очередь принимает запрос от нашего сервера и выполняет команду. Пользователь получает ответ уже от telegram.
Я не поленился, и зарисовал принцип работы — спешл фо ю)
Подготовка клиентской и серверной части
Бот в Telegram создается при помощи другого бота под названием BotFather. Можно найти как @BotFather
Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, и адрес. Например, «11q» с адресом «QqqqqqqqqqqRuBot». Вам нужно придумать свое. Если адрес не занят, и имя введено правильно, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать.
P.S. юзернейм бота должен заканчиваться на «bot»
Получаем сервер бесплатно
Самая ответственная часть, тут нужна максимальная концентрация. И так, нам нужен сервер, хотя нет, еще проще, мы арендуем хостинг. Хостинг — выделенное место на сервере, к которому у нас всегда будет доступ. Сам сервер целиком нам не понадобится.
Важно учесть, что наш сервер (на котором будет хоститься наш бот), должен быть заграничным. Это очень важно, т.к. бот, размещенный на территории РФ работать не будет!
Но я нарыл кое-что годное из бесплатного)
Я буду юзать БЕСПЛАТНЫЙ хостинг 000webhost.com
Открываем: https://www.000webhost.com/free-website-sign-up
Регистрируемся, нечего необычного.
После того как вы подтвердили почту, придумываем имя сайта, я использовал 11qRu, и пароль(он сгенерируеться сам но вы можете выбрать свой)
Далее важно выбрать вкладку «Upload Your Existing Website»
В открывшейся вкладке жмем New File
куда нужно нажимать
Называем файлик test.php (или по своему, главное латиницей и чтобы заканчивался на .php) После он отобразится в списке файлов (чуть ниже чем .htaccess). Как только видим его -> Кликаем на него и жмем карандашик (при наведении мыши подсветится как Edit) Вставляем следующий текст:
<?php
Echo "Привет, qqqqqqqqqqq.ru лучший сайт";
?>
Жмем сохранить)
Настройка приема и передачи сообщений
Затем жмем кнопку View (листочек) и наша ссылка откроется в новой вкладке
Например, моя: https://bax100.000webhostapp.com/bax_100.php
На открытой странице должно отображаться сообщение: Привет, qqqqqqqqqqq.ru лучший сайт
Если отображается — прекрасно! Таким образом мы проверили что загруженный на сервер скрипт работает и теперь мы можем разместить на нем нашего первого бота)
Для этого открываем файл снова в режиме редактирования (Edit), удаляем наш скрипт и вставляем текст:
<?php
$TOKEN = '951934194:AAGax7L1xfZ9H_6NTW4d4RJJLPJCMSB-CXk'; //ваше токен, получен в BotFather
$BOT_USERNAME = 'QqqqqqqqqqqRuBot'; // юзернейм бота (без собачки)
$webhook = 'https://11qru.000webhostapp.com/test.php'; //ваша ссылка
$url = 'https://api.telegram.org/bot'.$TOKEN.'/';
if (($json = valid()) == false) { echo get($url.'setWebhook?url='.$webhook); exit();}
$uid = $json['message']['from']['id'];
$first_name = $json['message']['from']['first_name'];
$ANSWER = "Ну привет, ".$first_name;
sendMessage($uid,$ANSWER);
function valid() {
$request_from_telegram = false;
if(isset($_POST)) {
$data = file_get_contents("php://input");
if (json_decode($data) != null)
$request_from_telegram = json_decode($data,1);
}
return $request_from_telegram;
}
function sendMessage($chat_id,$text,$markup=null)
{
return get($GLOBALS['url'].'sendMessage?chat_id='.$chat_id.'&text='.urlencode($text).'&reply_markup='.$markup.'&parse_mode=Markdown');
}
function get($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
?>
В следуйщем уроке мы разберем этот код, а сейчас обратите внимание, что нам в этом файле необходимо заполнить 3 первые строки, а именно:
$TOKEN = ‘951934194:AAGax7L1xfZ9H_6NTW4d4RJJLPJCMSB-CXk’;
$BOT_USERNAME = ‘QqqqqqqqqqqRuBot’;
$webhook = ‘https://11qru.000webhostapp.com/test.php’;
1 строка это ваш токен, полученный в BotFather (такая красная строка)
2 строка это юзернейм вашего бота, который мы отправляли в BotFather
3 Ссылка, которую мы придумывали при регистрации
Важно: Писать нужно также в кавычках как в моем примере
Интеграция Telegram с нашим сервером
Теперь откройте вашу ссылку (ту которую придумывали при создании сайта).
Конкретно у меня ссылка: https://11qru.000webhostapp.com/test.php
У вас будет своя, и при открытии вы должны увидеть примерно следующее:
{«ok»:true,»result»:true,»description»:»Webhook was set»}
Все, теперь Telegram будет знать что наш бот (определит по токену) расположен на нашем сервере. И если кто-то напишет нашему боту — Telegram продублирует это на наш сервер. Такая конструкция называется вебхук (Webhook), просто запомним и пойдем дальше!
Тестируем работоспособность
Что теперь делать? Проверять результат, ведь мы уже написали первого рабочего бота! Ищем в телеграм бота по нашему юзернейму и пишем ему любое сообщение) Он должен ответить нам приветом.
P,S, Поздравляю с первым рабочим ботом! На втором уроке мы разберем код этого бота и попробуем написать что-то посложнее)
P.S.
В дальнейшем, для работы с программным кодом мы будем пользоваться удобным онлайн инструментом, и нам больше не нужно будет заходить в файловый менеджер хостинга. И еще, помните что мы создавали файлик test.php?
Так вот, можно создать сколько угодно разных файлов — и каждый настроить как отдельного бота. Таким образом, на одном хостинге мы можем размещать неограниченное количество ботов. Главное чтобы ему хватило ресурсов )
P.P.S.
Если вам понравился данный материал, то лучшей благодарностью будет для меня если вы перейдёте на наш сайт qqqqqqqqqqq.ru, там много полезного материала) И ещё, если у вас что-то не вышло не стесняйтесь сообщить об этом в коментарях, мы вам поможем)
Источник: qqqqqqqqqqq.ru