Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:snippets:telegram

¡Esta es una revisión vieja del documento!


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

function escape_message_telegram($mensaje) {
    $escaped_message = str_replace(
        ['_', '*', '[', ']', '(', ')', '~', '>', '`', '#', '+', '-', '=', '|', '{', '}', '.', '!'],
        ['\_', '\*', '\[', '\]', '\(', '\)', '\~', '\>', '\`', '\#', '\+', '\-', '\=', '\|', '\{', '\}', '\.', '\!'],
        $mensaje
    );
    return $escaped_message;
}
informatica/programacion/php/snippets/telegram.1638281053.txt.gz · Última modificación: por tempwin