В этом году (2026 для потомков) Телеграм столкнулся с блокировками ограничениями. Ну в общем без матерного слова не работает. Но актуальность свою не потерял, и массы отказваются уходить из тг.
Работая с сайтами клиентов, я столкнулся с небольшой проблемой. На сайтах указвается ссылка на тг-личку или на чатбота вида https://t.me/username. Вроде как это правильно, но сейчас такая констркция работает плохо. Причина в том что многие ставят умные трехбуквенные обходные технологии, которые включают избранные приложения. То есть приложение телеграм на смартфоне работает, а вот t.me уже работать не будет.
Для обхода этой проблемы написал небольшой js скриптик:
// Навешиваем обработчик на ВСЕ ссылки с классом telegram-link
document.querySelectorAll('.telegram-link').forEach(function(link) {
link.addEventListener('click', function(e) {
e.preventDefault();
// Берём полную ссылку из атрибута href
var webLink = this.href;
// Извлекаем username из ссылки https://t.me/username
var username = webLink.replace('https://t.me/', '').replace(/\/.*$/, '').split('?')[0];
// Формируем tg:// ссылку
var tgLink = 'tg://resolve?domain=' + username;
var opened = false;
// Отслеживаем сворачивание страницы (признак, что Telegram открылся)
var handleVisibility = function() {
if (document.hidden) {
opened = true;
document.removeEventListener('visibilitychange', handleVisibility);
}
};
document.addEventListener('visibilitychange', handleVisibility);
// Пытаемся открыть Telegram
window.location.href = tgLink;
// Через 3 секунды проверяем, не открылся ли Telegram
setTimeout(function() {
if (!opened) {
window.location.href = webLink;
}
}, 3000);
});
});
Как это работает:
-
При клике скрипт берёт ссылку из
href(https://t.me/username) -
Вырезает из неё имя пользователя (
username) -
Формирует
tg://resolve?domain=usernameи пытается открыть -
Если через 3 секунды Telegram не открылся — перекидывает на исходную веб-ссылку