informatica:programacion:php:snippets:telegram
Tabla de Contenidos
PHP Snippets: Telegram
Enviar mensajes
El siguiente código hará que un bot previamente creado (BOT_TOKEN) envíe un mensaje a un usuario que haya iniciado una conversación con él (CHAT_ID).
define('BOT_TOKEN', "1837123456:BBG96WBrBlkkeYIvoOOyvuWa123psChsA1d"); define('CHAT_ID', 123456); // API de Telegram para realizar el envío del mensaje a través del bot $api_url = "https://api.telegram.org/bot" . BOT_TOKEN; function send_message($chat_id, $texto) { global $api_url; // Parámetros que le pasaremos a la API $params = [ 'chat_id' => $chat_id, 'text' => $texto, 'parse_mode' => "MarkdownV2" ]; // Llamada a la API $ch = curl_init($api_url . '/sendMessage'); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, ($params)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); curl_close($ch); //var_dump($result); } // Uso send_message(CHAT_ID, "Hola, caracola");
Al usar la sintaxix MarkdownV2 con la API de Telegram, ciertos caracteres deben ser "escapados"
Otra opción más portable:
// Envía un mensaje a Telegram utilizando su API de bots // (https://core.telegram.org/bots/api) function enviar_telegram($id_chat, $mensaje, $token_bot = '', $silent = false) { // Modo de formato del texto $parse_mode = "MarkdownV2"; // html, Markdown, MarkdownV2 $data = array( 'chat_id' => $id_chat, 'text' => $mensaje, 'parse_mode' => $parse_mode, 'disable_web_page_preview' => true, 'disable_notification' => $silent ); if($token_bot != '') { $ch = curl_init('https://api.telegram.org/bot' . $token_bot . '/sendMessage'); curl_setopt_array($ch, [ CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $data ]); curl_exec($ch); curl_close($ch); } }
Escapar caracteres para Markdown
Al usar la sintaxix MarkdownV2 con la API de Telegram, ciertos caracteres deben ser "escapados". Con la siguiente función podemos aplicar estos cambios sobre un mensaje con formato Markdown para que pueda ser transmitido a través de la API de Telegram:
function escape_message_telegram($mensaje) { $escaped_message = str_replace( ['_', '*', '[', ']', '(', ')', '~', '>', '`', '#', '+', '-', '=', '|', '{', '}', '.', '!'], ['\_', '\*', '\[', '\]', '\(', '\)', '\~', '\>', '\`', '\#', '\+', '\-', '\=', '\|', '\{', '\}', '\.', '\!'], $mensaje ); return $escaped_message; }
informatica/programacion/php/snippets/telegram.txt · Última modificación: por tempwin
