# Как работают ссылки Telegram ## Проблема Ссылки на **личные профили пользователей** через `https://t.me/username` **не работают напрямую** в браузере. ❌ **НЕ РАБОТАЕТ**: `https://t.me/trevor1985` (для личного профиля) ✅ **РАБОТАЕТ**: `https://t.me/smartsoltech` (для каналов, групп, ботов) ## Решение ### 1. Использование tg:// протокола **Для личных профилей пользователей** используется специальный протокол `tg://`: ```html Открыть в Telegram ``` Этот формат: - ✅ Открывает Telegram приложение (Desktop или Mobile) - ✅ Работает на всех платформах (Windows, macOS, Linux, iOS, Android) - ❌ Не работает в браузере, если Telegram не установлен ### 2. Типы ссылок Telegram | Тип | Формат для браузера | Формат для приложения | |-----|-------------------|----------------------| | **Бот** | `https://t.me/botusername` | `tg://resolve?domain=botusername` | | **Канал/Группа** | `https://t.me/channelname` | `tg://resolve?domain=channelname` | | **Личный профиль** | ❌ Не поддерживается | `tg://resolve?domain=username` | | **Номер телефона** | `https://t.me/+1234567890` | `tg://resolve?phone=+1234567890` | ### 3. Реализация в проекте #### TeamMember модель (web/models.py) ```python telegram = models.CharField( max_length=100, blank=True, verbose_name='Telegram', help_text='Username без @ (например: trevor1985)' ) ``` **Важно**: Вводить username **БЕЗ символа @** - ✅ Правильно: `trevor1985` - ❌ Неправильно: `@trevor1985` #### Шаблон team_section.html ```django {% if member.telegram %} {% endif %} ``` ### 4. Альтернативные варианты #### Вариант A: Только показывать username ```html @{{ member.telegram }} Найдите в поиске Telegram ``` #### Вариант B: Копировать в буфер обмена ```html ``` #### Вариант C: Универсальная ссылка (fallback) ```html ``` ### 5. Для ботов и каналов Если нужно сослаться на **бота** или **канал**, используйте обычные HTTPS ссылки: ```python # FooterSettings или другие модели telegram_url = models.URLField(blank=True, verbose_name='Telegram URL') ``` ```django @smartsoltech ``` ### 6. Документация Telegram Официальная документация по ссылкам: - https://core.telegram.org/api/links - https://telegram.org/faq#q-what-are-usernames-how-do-i-get-one **Deep Links схема**: - `tg://resolve?domain=USERNAME` - открыть профиль/канал - `tg://resolve?phone=PHONE_NUMBER` - открыть по номеру - `tg://msg?to=USERNAME&text=TEXT` - отправить сообщение - `tg://join?invite=HASH` - присоединиться к группе по инвайту ### 7. Проверка в проекте После изменений: 1. ✅ Обновлен `team_section.html` - использует `tg://resolve?domain=` 2. ✅ Добавлен `help_text` в модель `TeamMember` 3. ✅ Применена миграция `0012_alter_teammember_telegram.py` 4. ✅ В админке теперь подсказка: "Username без @" ### 8. Тестирование Для проверки корректности: 1. Откройте страницу `/about/` (О нас) 2. Нажмите на иконку Telegram у члена команды 3. Должно открыться Telegram приложение с профилем пользователя **Примечание**: Если Telegram не установлен, браузер может показать ошибку "Protocol not supported" - это нормально. ## Вывод ✅ **Используйте**: - `tg://resolve?domain=username` для личных профилей - `https://t.me/botname` для ботов и каналов - Username **БЕЗ @** в базе данных