Жив ли канал
Проверяет ссылку Telegram без аккаунта, без Bot API и без токена.
Ключ
Вставьте куда угодно и допишите в конец то, что проверяете.
https://monoblock.casa/keys/alive/@username, ссылка t.me/... или приватный инвайт +hash
Попробовать прямо тут
Читает публичную превью-страницу t.me — ту самую, которую Telegram отдаёт мессенджерам для картинки ссылки. Отвечает, существует ли канал/группа/бот/аккаунт, и заодно отдаёт всё, что вообще есть на странице: название, описание, галочку верификации, число подписчиков или участников, сколько сейчас онлайн, аватарку и прямую ссылку в приложение. Мёртвые и заблокированные страницы отличаются от живых по разметке, а не по коду ответа: Telegram на удалённый канал возвращает 200 и заглушку.
Вход
| параметр | тип | что это |
|---|---|---|
link * | string | @username, ссылка t.me/... или приватный инвайт +hash |
Ответ
| поле | тип | что это |
|---|---|---|
is_alive | boolean | существует ли страница |
kind | string | channel, group, bot, user или unknown; приватность типа не отменяет — она в поле is_private, а private_invite остаётся только когда вид по странице не определить |
title | string | название |
description | string | описание из шапки |
members_count | integer | подписчиков, участников или пользователей бота за месяц |
members_label | string | чего именно счётчик: subscribers, members, monthly users |
online_count | integer | сколько участников группы сейчас онлайн |
verified | boolean | стоит ли галочка Telegram |
is_private | boolean | вход по приглашению +hash, страницы без ссылки не найти |
needs_request | boolean | войти можно только по заявке, которую кто-то должен одобрить |
restricted | boolean | заблокирован Telegram за нарушения |
has_preview | boolean | у канала открыта публичная лента t.me/s/... |
avatar_url | string | прямая ссылка на аватарку |
deep_link | string | ссылка вида tg://resolve — открывает прямо в приложении |
action | string | надпись на кнопке страницы: View in Telegram, Start Bot, Send Message |
username | string | имя, приведённое к канону, без @ и без t.me |
url | string | адрес проверенной страницы |
error | string | почему не жив, если не жив |
Позвать из кода
Ставить нечего: везде, кроме C++, хватает стандартной библиотеки. Ответ приходит готовой строкой — разбирать нечего.
curl 'https://monoblock.casa/keys/alive/durov'
import urllib.request
print(urllib.request.urlopen("https://monoblock.casa/keys/alive/durov").read().decode())const answer = await (await fetch("https://monoblock.casa/keys/alive/durov")).text();
console.log(answer);// сборка: g++ main.cpp -lcurl
#include <curl/curl.h>
#include <iostream>
#include <string>
static size_t sink(char* data, size_t size, size_t n, void* out) {
static_cast<std::string*>(out)->append(data, size * n);
return size * n;
}
int main() {
CURL* curl = curl_easy_init();
std::string answer;
curl_easy_setopt(curl, CURLOPT_URL, "https://monoblock.casa/keys/alive/durov");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, sink);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &answer);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
std::cout << answer << std::endl; // готовая строка, разбирать нечего
}resp, _ := http.Get("https://monoblock.casa/keys/alive/durov")
defer resp.Body.Close()
answer, _ := io.ReadAll(resp.Body)
fmt.Println(string(answer))echo file_get_contents("https://monoblock.casa/keys/alive/durov");Нужно одно поле — допишите ?only=is_alive, придёт только оно. Полный ответ — ?fmt=json, да/нет — ?fmt=bool.
В ассистенте
Инструмент называется alive — просто попросите словами, подставлять параметры ассистент будет сам.
Откуда
TG Catalog — логика разбора вырезана из checker.py