В новом уроке, я покажу вам пример класса для отправки запросов в Telegram. Мы разработаем с вами удобный класс, который легко расширять, и который ускорит создание ваших ботов в несколько раз.
Для начала давайте создадим класс и назовём его BotsTimeTelegram. Данный класс будет иметь свойство для записи токена, метод для создания запросов в Телеграмм, метод для логирования ошибок и 2 свойства для записи id чата для логирования и путь до файла с лог данными.
Класс получился небольшой, в дальнейшем мы будем его дописывать. Сейчас из функционала здесь есть метод для отправки запросов в Telegram пользователя (sendQueryTelegram) и метод для отправки запросов в чат с логами (sendLogTelegram).
При возникновение ошибки запроса будет выпадать исключение, которое в дальнейшем мы будет отправлять в чат администратора, в виде в лог файла.
class BotsTimeTelegram {
private $token = "";
private $chatLogQuery = 1424646511;
private $logFilePath = __DIR__ . "/file_log.txt";
public function __construct($token) {
$this->token = $token;
}
/* ЛОГИРОВАНИЕ ДАННЫХ И ОТПРАВКА В TELEGRAM */
public function sendLogTelegram($logData, $reasonLog = false) {
file_put_contents($this->logFilePath, $logData);
$textMessage = date("d.m.Y H:i") . " Логирование данных";
if($reasonLog) {
$textMessage .= "\n" . "Причина: " . $reasonLog;
}
$arrQuery = [
"chat_id" => $this->chatLogQuery,
"caption" => $textMessage,
"document" => new CURLFile($this->logFilePath)
];
$this->sendQueryTelegram("sendDocument", $arrQuery);
unlink($this->logFilePath);
}
/* ================================== */
/* ПАРСЕР ДЛЯ ОТПРАВКИ ЗАПРОСОВ */
public function sendQueryTelegram($method, $arrayQuery = "", $resultJSON = false) {
$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);
if(!isset($result)){
throw new Exception(curl_error($curl));
}
if(isset($arrResult["ok"]) && $arrResult["ok"] == false) {
$arrResult = json_decode($result, true);
$arrDataLog = [
"method" => $method,
"arrayQuery" => $arrayQuery,
"arrResult" => $arrResult
];
$arrDataLogJSON = json_encode($arrDataLog);
throw new Exception($arrDataLogJSON);
}
if($resultJSON == true) {
return $result;
} else {
return json_decode($result, true);
}
}
/* ================================== */
}
Для работы нашего скрипта пропишем ниже код для запуска. В конструкции try мы прописываем код для работы бота, в catch, прописываем отправку данных на в лог чат в случае возникновения ошибок отправки или ошибок в передаче параметров запроса.
try {
$bot = new BotsTimeTelegram("5340791844:AAGfL08SNlf5QQsr1kbDoWJ9U65Brr8Kyko");
$arrayQuery = array(
'chat_id' => 1424646511,
'text' => "Тестовое сообщение",
'parse_mode' => "html",
);
$resultQuery = $bot->sendQueryTelegram("sendMessage", $arrayQuery);
} catch (Exception $e) {
$errorMessage = $e->getMessage();
$bot->sendLogTelegram($errorMessage);
}
Таким образом за 7 уроков мы с вами научись разрабатывать бота для Telegram с базовым функционалом. Спасибо большое за то что просмотрели все материалы до конца. В дальнейших уроках я постараюсь продолжить развивать данную тему. Если вам понравилась данная рубрика, прошу поддержать меня лайком и подпиской, а так же добавить небольшой комментарий с просьбами или замечаниями к материалу. Я стараюсь отвечать на каждый комментарий, когда есть свободное время, и каждое ваше сообщение помогает улучшить будущие уроки.