В новом уроке мы с вами рассмотрим важные моменты по проектированию скриптов для Telegram ботов. Я расскажу где размещать скрипты на ботов, на каком языке лучше разрабатывать ботов (PHP или Python).
Какой хостинг или сервер выбрать для Telegram бота?
Для своих проектов я использую хостинг Beget.
Я использую данный хостинг для размещения сайтов и ботов. Для ботов я подключил VPS, который позволяет подключать неограниченное количество доменов и создавать для них неограниченное количество поддоменов.
Таким образом я могу для каждого своего бота создать отдельный проект.
Тариф нужно выбирать отталкиваясь от нагрузки, я использую чаще всего сервера для разработки, сами боты на продакшене хранятся у клиентов, поэтому мне хватает минимального тарифа.
На данный момент я использую тариф 7р в день, это примерно 210р в месяц, на все мои боты.
Как идентифицировать Telegram бота?
Для идентификации Telegram бота и проверки, что запрос поступил от бота, а не от стороннего парсера, я передаю GET параметры URL при регистрации хука.
То есть при отправке запроса на setWebhook, вам необходимо указать дополнительный GET параметр с ключом, а в вашем обработчике вам нужно проверить правильность данного ключа.
Какие ключи могут приходить в ответе от бота?
Ранее я вам рассказывал про 2 типа ключей callback_data и message. Для ознакомлений полной информации, вы можете перейти в документацию и посмотреть, какие типы ключей ещё существуют.
https://core.telegram.org/bots/api#update
Логирование запросов от Telegram
Для логирования запросов и отлова ошибок я использую специальные модуле на сервере.
Hestia CP по стандарту для каждого домена ведёт свой лог с ошибками любого типа, это помогает следить за работой ботов. Для записи ответов вы можете создать дополнительные методы или воспользоваться внутренними настройками, если вы используете фреймворк для настройки бота.
Использование Postman в разработке Telegram бота
Postman это отличное решение для отправки любых типов запросов. Данную программу я использую уже несколько лет при разработке парсеров и ботов для социальных сетей.
Я лично рекомендую для каждого своего бота писать инструкции в Postman, чтобы в случае ошибки, за короткое время воссоздать событие, которое создаёт ошибку и исправить её.
Упрощённая версия класса для отправки запросов в Telegram
class TelegramBot {
private $token = токен_бота;
/**
* Отправка запроса в Telegram
*
* @param mixed $method
* @param mixed $arrayQuery
* @return void
*/
public function sendQueryTelegram(string $method, array $arrayQuery = [])
{
$ch = curl_init("https://api.telegram.org/bot". $this->token ."/" . $method . "");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $arrayQuery);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type:multipart/form-data"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}
}