# Как работают ссылки 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 **БЕЗ @** в базе данных