====== 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 [[https://core.telegram.org/bots/api#markdownv2-style|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); } } * [[http://www.unicode.org/emoji/charts/full-emoji-list.html|Lista de emoticonos para copiar y pegar]] ==== Escapar caracteres para Markdown ==== Al usar la sintaxix MarkdownV2 con la API de Telegram, ciertos caracteres [[https://core.telegram.org/bots/api#markdownv2-style|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; }