<Proger/> Про мене
ProProger

Telegram Bot API > Робимо власного бота в Telegram

Автор: / Час публікації: 08/08/2017 15:45

Всім привіт! Зараз є дуже популярні боти в різних месенджерах. Одним із таких популярних месенджерів є Telegram. Багато відомих компаній використовують його, як call-центр. Як реалізувати свій call-центр, я, мабуть, розкажу в якісь іншій статті. А зараз ми розглянемо приклад простого бота, який буде відповідати на повідомлення користувачів.

Крок №1. Створення бота на стороні Telegram.

Для початку потрібно почати діалог з головним ботом(його можна знайти за іменем "@BotFather") і написати йому команду "/newbot". Після чого бот запропонує ввести назву бота і його username(обов'язково в кінці має бути слово "bot"). Все бота створено і Вам головний бот видав Access Token, який знадобиться пізніше.

Крок №2. Налаштовуємо Webhooks у Telegram

Webhook - це спеціальна технологія, яка буде сповіщати Ваш сервер про зміни, які відбулися з Вашим ботом(Наприклад, хтось йому написав). Отож, щоб активувати цю технологію потрібно відправити посилання, на яке будуть приходити ці оновлення, на сервер Telegram. Для цього потрібно звернутися за цим посиланням: https://api.telegram.org/bot_access_token_/setWebhook?url=_url_, де _access_token_ - це токен отриманий від головного бота в першому кроці, а _url_ - це закодоване за допомогою функції urlencode() посилання на файл, куда будуть приходити ці оновлення.

Для безпеки вкажіть get-параметр з спеціальним значенням, про який буде знати тільки сервер Telegram і Ви!(Наприклад, http://site.com/file_for_telegram.php?secret_token=JMKFCMfkl45fd8FDfd5ff).

Крок №3. Робота на стороні сайту.

Тепер, коли хтось напише Вашому боту, то тоді Ваш сервер буде знати про це! І щоб бот міг реагувати якось на на команди, то потрібно вставити цей код у файл, на який Ви спрямували WebHooks у кроці №2.

$get_tok =  'JMKFCMfkl45fd8FDfd5ff';//Створений нами токен у кроці №2,який був відправлениий у посиланні, щоб підключити Webhooks, щоб захистити свій сервер від повідомлені з інших сайтів
if($_GET['secret_token'] === $get_tok){//Перевіряємо цей токен            
$content = json_decode(file_get_contents('php://input'));//Отримуємо дані, які відправив Telegram, і декодуємо
$access_token = "000000000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";//Access Token, отриманий у першому кроці
if($content){// перевіряємо присутність даних
    $id = $content->message->from->id;// отримуємо id користувача, який відправив повідомлення боту
    if($id){// перевіряємо цей id
        $text = mb_strtolower($content->message->text);// переводимо нижній реєстр повідомлення, для того,  щоб повідомлення можна було писати в будь-якому реєстрі
        switch($text){// перевіряємо значення повідомлення
            case 'привіт':                
                $message = 'Привіт';// Якщо користувач написав 'привіт', то повідомлення від бота буде 'Привіт'
                 break;       
            case 'час':                
                $message = date('d/n/Y H:i:s');// Якщо користувач написав 'час', то повідомлення від бота буде теперешній час
                 break;                
             default:
                  $message = 'Такої команди не існує!';// Якщо користувач написав боту якусь команду, якої немає вище, то буде відправлено це повідолення 
                  break;
          }
          $arr = array(// формуємо масив для відправлення даних на сервер Telegram
              'chat_id' => $id,//отриманий id користувача
              'text' => $message,// повідомлення створене вище
              'disable_web_page_preview' => false,// дозволити посилання з картинкою
              'parse_mode' => 'HTML',// дозволити HTML-розмітку в повідомлені
          );
          $url = 'https://api.telegram.org/bot'.$access_token.'/sendMessage?'.http_build_query($arr);//Формуємо силку для відправлення даних
          file_get_contents($url);//Відправляємо дані на сервер Telegram 
        }
    }
}

Таким чином, Ви зможете додавати нові команди і опрацьовувати їх.

Посилання:

Telegram WebHooks - https://core.telegram.org/bots/api#setwebhook
Метод sendMessage - https://core.telegram.org/bots/api#sendmessage
Не забувай написати коментар і поширити посилання в соц. мережах за допомогою кнопок нижче! Дякую за увагу!

Коментарі(2)

Administrator
10/08/2017 15:03
Так, писав! Але то я робив на замовлення! Дякую за пораду!
Бонд
09/08/2017 13:40
Дякую. Вже писали якийсь цікавий бот? :) P.S. line-height трошки збільште, хоча б у блоці з кодом...