process-telegram-updates/lib/telegram_lib.php
Frederico @ VilaRosa02 b6b01b48dc init
2025-08-27 08:52:36 +00:00

65 lines
2.0 KiB
PHP

<?php
function telegram_send_text(string $chatId, string $text, string $parseMode = 'HTML'): array {
global $TELEGRAM_BOT_TOKEN;
$url = 'https://api.telegram.org/bot'.$TELEGRAM_BOT_TOKEN.'/sendMessage';
$payload = [
'chat_id' => $chatId,
'text' => $text,
'parse_mode' => $parseMode,
'disable_web_page_preview' => true,
];
return telegram_post($url, $payload);
}
/**
* $kind: 'photo' or 'document'
* - photo → shows as image preview
* - document → shows as file (any type: pdf/zip/etc.)
*/
function telegram_send_file(string $chatId, string $filePath, string $kind = 'document', ?string $caption = null, string $parseMode = 'HTML'): array {
global $TELEGRAM_BOT_TOKEN;
if (!file_exists($filePath)) {
throw new RuntimeException("File not found: $filePath");
}
$method = $kind === 'photo' ? 'sendPhoto' : 'sendDocument';
$field = $kind === 'photo' ? 'photo' : 'document';
$url = 'https://api.telegram.org/bot'.$TELEGRAM_BOT_TOKEN.'/'.$method;
$payload = [
'chat_id' => $chatId,
$field => new CURLFile(realpath($filePath)),
];
if ($caption !== null) {
$payload['caption'] = $caption;
$payload['parse_mode'] = $parseMode;
}
return telegram_post($url, $payload, /*multipart=*/true);
}
/* ---- internals ---- */
function telegram_post(string $url, array $payload, bool $multipart = false): array {
global $TELEGRAM_BOT_TOKEN;
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $payload, // if contains CURLFile, cURL uses multipart automatically
]);
$resp = curl_exec($ch);
if ($resp === false) {
$err = curl_error($ch);
curl_close($ch);
throw new RuntimeException("cURL error: $err");
}
curl_close($ch);
$data = json_decode($resp, true);
if (!is_array($data) || empty($data['ok'])) {
throw new RuntimeException("Telegram error: $resp");
}
return $data;
}