====== 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;
}