Telegram бот на PHP #8: рекомендации по проектированию ботов и ответы на вопросы — PROG-TIME

Telegram бот на PHP #8: рекомендации по проектированию ботов и ответы на вопросы

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

В новом уроке мы с вами рассмотрим важные моменты по проектированию скриптов для Telegram ботов. Я расскажу где размещать скрипты на ботов, на каком языке лучше разрабатывать ботов (PHP или Python).

Какой хостинг или сервер выбрать для Telegram бота?

Для своих проектов я использую хостинг Beget.

https://beget.com/p658517

Я использую данный хостинг для размещения сайтов и ботов. Для ботов я подключил 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);

    }

}

Материалы курса