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.
GET orqali Telegram username qabul qilinadi.
Server t.me username sahifasini so‘raydi.
Kerakli ochiq ma’lumotlar HTML ichidan ajratiladi.
Natija frontend yoki boshqa dastur uchun JSON ko‘rinishida qaytariladi.
GET orqali username yuborish
API’ni quyidagi ko‘rinishda chaqirish mumkin:
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.
To‘liq PHP kodi
Quyidagi kod username, ism, bio, profil rasmi URL manzili va Telegram sahifasi URL manzilini JSON ko‘rinishida qaytaradi.
<?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:
{
"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.
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?
Username asosida kanal yoki bot ma’lumotlarini chiqarish.
Telegram loyihalarini web sahifada avtomatik ko‘rsatish.
Frontend yoki boshqa dasturga Telegram ma’lumotlarini uzatish.
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.
Tayyor API manzili
Ushbu maqoladagi namuna uchun ishlayotgan endpoint:
https://chorshamov.uz/blog/examples/php/telegram-info-no-key.php?username=REAKE01BOT
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.