⚡ Telegram & PHP

Telegram Bot Tokenisiz Username orqali Ochiq Ma’lumotlarni PHP’da Olish

Telegram botlar bilan ishlaganda ko‘pincha foydalanuvchi yoki kanal haqida ma’lumot olish uchun Bot API tokenidan foydalaniladi. Ammo username orqali Telegram’ning ochiq web sahifasidan ko‘rinadigan ma’lumotlarni PHP yordamida olish mumkin.

Ushbu maqolada GET orqali username qabul qiladigan, Telegram sahifasiga so‘rov yuboradigan va natijani JSON formatida qaytaradigan oddiy PHP API yaratamiz.

Bu usul qanday ishlaydi?

Server foydalanuvchidan username parametrini oladi. Masalan, REAKE01BOT. Keyin PHP https://t.me/REAKE01BOT sahifasiga cURL orqali murojaat qiladi.

01
Username

GET orqali Telegram username qabul qilinadi.

02
Telegram sahifasi

Server t.me username sahifasini so‘raydi.

03
HTML parser

Kerakli ochiq ma’lumotlar HTML ichidan ajratiladi.

04
JSON

Natija frontend yoki boshqa dastur uchun JSON ko‘rinishida qaytariladi.

1-BOSQICH

GET orqali username yuborish

API’ni quyidagi ko‘rinishda chaqirish mumkin:

GET request
https://chorshamov.uz/blog/examples/php/telegram-info-no-key.php?username=REAKE01BOT

Shu manzilga so‘rov yuborilganda PHP username qiymatini olib, Telegram sahifasini tekshiradi.

2-BOSQICH

To‘liq PHP kodi

Quyidagi kod username, ism, bio, profil rasmi URL manzili va Telegram sahifasi URL manzilini JSON ko‘rinishida qaytaradi.

telegram-info-no-key.php
<?php
header("Content-Type: application/json; charset=utf-8");
header("Access-Control-Allow-Origin: https://chorshamov.uz");

$username = $_GET["username"] ?? "";

$username = ltrim(trim($username), "@");

if (!preg_match('/^[A-Za-z0-9_]{5,32}$/', $username)) {
    http_response_code(400);
    echo json_encode([
        "ok" => false,
        "error" => "Noto‘g‘ri username"
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

$url = "https://t.me/" . $username;

$ch = curl_init($url);

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_CONNECTTIMEOUT => 4,
    CURLOPT_TIMEOUT => 6,
    CURLOPT_USERAGENT => "Mozilla/5.0",
    CURLOPT_SSL_VERIFYPEER => true,
]);

$html = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

if (!$html || $code !== 200) {
    http_response_code(404);
    echo json_encode([
        "ok" => false,
        "error" => "Telegram sahifasi topilmadi"
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

$name = null;
$bio = null;
$photo = null;

if (preg_match('/class="[^"]*tgme_page_title[^"]*"[^>]*>\s*<span[^>]*>(.*?)<\/span>/s', $html, $m)) {
    $name = trim(html_entity_decode(strip_tags($m[1]), ENT_QUOTES, "UTF-8"));
}

if (preg_match('/class="[^"]*tgme_page_description[^"]*"[^>]*>(.*?)<\/div>/s', $html, $m)) {
    $raw = preg_replace('/<br\s*\/?>/i', "\n", $m[1]);
    $bio = trim(html_entity_decode(strip_tags($raw), ENT_QUOTES, "UTF-8"));
}

if (preg_match('/class="[^"]*tgme_page_photo_image[^"]*"[^>]*src="([^"]+)"/s', $html, $m)) {
    $photo = html_entity_decode($m[1], ENT_QUOTES, "UTF-8");
}

echo json_encode([
    "ok" => true,
    "username" => $username,
    "name" => $name,
    "bio" => $bio,
    "photo" => $photo,
    "url" => $url
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

JSON natijasida nimalar qaytadi?

API muvaffaqiyatli ishlaganda natija quyidagi maydonlarni o‘z ichiga oladi:

JSON response
{
    "ok": true,
    "username": "REAKE01BOT",
    "name": "REAKE01BOT",
    "bio": "Telegram sahifasidagi ochiq tavsif",
    "photo": "https://cdn4.telegram-cdn.org/file/...",
    "url": "https://t.me/REAKE01BOT"
}

Rasm URL manzilini olish

Yangilangan kod tgme_page_photo_image elementini qidiradi. Agar Telegram sahifasida profil yoki kanal rasmi ochiq bo‘lsa, uning URL manzili photo maydoniga yoziladi.

Agar rasm mavjud bo‘lmasa yoki Telegram sahifasi uni qaytarmasa, photo qiymati null bo‘ladi.

Username tekshiruvi nima uchun kerak?

GET parametrini tekshirmasdan serverda ishlatish yaxshi amaliyot emas. Shu sababli kod faqat Telegram username formatiga mos qiymatlarni qabul qiladi.

🔒 Xavfsizlik

preg_match() username ichida faqat harf, raqam va pastki chiziqdan foydalanilganini tekshiradi. Uzunlik ham 5–32 belgi oralig‘ida cheklanadi.

Bot tokeni kerakmi?

Ushbu namuna Telegram Bot API tokenidan foydalanmaydi. Server Telegram’ning ochiq t.me/username sahifasini o‘qiydi.

Ammo bu rasmiy Telegram Bot API emas. Shuning uchun faqat web sahifada ochiq ko‘rinadigan ma’lumotlar bilan ishlash mumkin.

Qaysi holatlarda foydali?

01
Telegram kataloglari

Username asosida kanal yoki bot ma’lumotlarini chiqarish.

02
Portfolio

Telegram loyihalarini web sahifada avtomatik ko‘rsatish.

03
JSON API

Frontend yoki boshqa dasturga Telegram ma’lumotlarini uzatish.

04
Avtomatlashtirish

Ko‘p username bilan ishlaydigan kichik server dasturlarini yaratish.

Cheklovlar

Telegram web sahifasining HTML tuzilishi o‘zgarishi mumkin. Agar Telegram sahifa klasslari yoki HTML tuzilishini o‘zgartirsa, parserni ham yangilash kerak bo‘ladi.

Ko‘p miqdorda ketma-ket so‘rov yuborish ham tavsiya etilmaydi. Real loyihada cache, rate limit va xatolarni qayta ishlash mexanizmlaridan foydalanish yaxshi yechim hisoblanadi.

⚡ ISHLAYDIGAN NAMUNA

Tayyor API manzili

Ushbu maqoladagi namuna uchun ishlayotgan endpoint:

telegram-info-no-key.php
https://chorshamov.uz/blog/examples/php/telegram-info-no-key.php?username=REAKE01BOT

API natijasini brauzerda ko‘rish →

PHP kodini serverda qanday saqlash kerak?

PHP kodini maqola HTML faylining ichiga bajariladigan PHP sifatida qo‘yish shart emas. API uchun alohida telegram-info-no-key.php fayl yaratiladi.

Maqolaning o‘zida esa kod <pre><code> ichida oddiy matn sifatida ko‘rsatiladi. Shu sababli maqolani ochgan foydalanuvchi kodni ko‘radi, lekin maqola fayli uni serverda PHP sifatida bajarishga urinmaydi.

Xulosa

PHP va cURL yordamida Telegram username orqali ochiq web ma’lumotlarini token ishlatmasdan olish mumkin. Ushbu usul sodda API, Telegram katalogi, portfolio va kichik avtomatlashtirish loyihalarida foydali bo‘lishi mumkin.

Eng muhim jihat — bu usul Telegram Bot API emas. U faqat Telegram web sahifasida ochiq ko‘rinadigan ma’lumotlarga tayanadi.