Создание бота на Telegram. Библиотека для быстрого создания бота на Телеграмм — PROG-TIME

Создание бота на Telegram. Библиотека для быстрого создания бота на Телеграмм

16.11.2021
Содержание:

Недавно я нашёл очень хорошую SDK для создания ботов. Не зная документацию Telegram, но разбираясь в методах API, я быстро разобрался в том как создавать ботов на Telegram с клавиатурой, подсказками и передачей картинок. В данной записи мы с вами рассмотрим библиотеку TelegramBot/Api

Ссылка на SDK- https://github.com/TelegramBot/Api/

Перейдя по ссылке ваше, вы сможете скачать библиотеку с GitHub или через Composer.

Регистрация файла для приёма хуков от бота

У Telegram максимально упрощённая система приёма хуков. Для того чтобы назначить файл куда будут отправляться запросы от бота, достаточно просто перейти по шаблонному URL. В данном URL нужно подставить свой токен и путь до файла с обработчиком.

https://api.telegram.org/botТОКЕН_ДЛЯ_БОТА/setwebhook?url=https://prog-time.ru/tg_script/index.php
/* ловим запросы от бота */
$requestBody = file_get_contents('php://input'); 
$data = json_decode($requestBody, true);

/* записываем данные в лог файл */
file_put_contents(__DIR__ . '/message.txt', print_r($data, true));

Для подключения библиотеки пропишем следующий код:

// подключаем библиотеку
require_once __DIR__ . '/TelegramBot/vendor/autoload.php';

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

$bot = new \TelegramBot\Api\Client(API_KEY);

Простая отправка сообщения с помощью бота

Для отправления простого сообщения используется метод sendMessage(). Первым параметром передаётся id диалога, второй параметр — это само сообщение и третий параметр — тип сообщения (в этом случае я всегда проставляю «HTML» для поддержки тегов).

$bot->sendMessage(
	$message->getChat()->getId(),
	"Текс для сообщения",
	"HTML"
);

Отправка картинки с помощью бота

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

$bot->sendPhoto(
	$message->getChat()->getId(),
	"https://telegram.org/file/464001876/2/61q3quSkA-o.229990/0448e8588e48b3942c",
	"Some <b>bold</b> caption for the photo",
	null,
	null,
	null,
	"HTML"
);

Отправка кнопок в сообщение в Telegram

$question = 'Это текст для сообщения!';
$keyboard = new \TelegramBot\Api\Types\Inline\InlineKeyboardMarkup([
    [
        ['text' => "Кнопка 1", 'callback_data' => 'option1'],
        ['text' => "Кнопка 2", 'callback_data' => 'option2'],
        ['text' => "Кнопка 3", 'callback_data' => 'option3']
    ]
]);

$bot->sendMessage($message->getChat()->getId(), $question, null, false, null, $keyboard);

Удаление сообщений с помощью бота

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

$bot->editMessageText(
	$temp_message->getChat()->getId(),
	$temp_message->getMessageId(),
	"I'm sorry. I found <b>nothing</b>!",
	"HTML"
);