Для осуществления интеграции телеграм-бота с Яндекс Метрикой, вам потребуется использовать Telegram API и Метрику API.
Ниже приведен пример кода на Python, который позволяет отслеживать пользователей сайта, которые подписались на канал, и передавать эту информацию в Яндекс.Метрику через JS событие:
```python
import requests
import json
# Здесь нужно указать ваш токен от Telegram Bot API
telegram_token = 'YOUR_TELEGRAM_TOKEN'
# Здесь нужно указать ваш ID канала в Telegram
telegram_channel_id = 'YOUR_TELEGRAM_CHANNEL_ID'
# Здесь нужно указать ваш ID цели в Яндекс Метрике
yandex_metrika_goal_id = 'YOUR_YANDEX_METRIKA_GOAL_ID'
def start_bot():
# Открываем сессию для работы с API Телеграма
with requests.Session() as session:
offset = None
while True:
try:
params = {'offset': offset, 'timeout': 60}
response = session.get(f'https://api.telegram.org/bot{telegram_token}/getUpdates', params=params)
data = json.loads(response.text)
updates = data.get('result', [])
if updates:
for update in updates:
offset = update['update_id'] + 1
message = update.get('message')
if message and message.get('channel_post'):
# Обнаружена новая публикация в канале
subscribers = get_subscribers()
send_event(subscribers)
except requests.exceptions.RequestException as e:
# Обработка ошибок
print(f'An error occurred: {e}')
def get_subscribers():
# Отправляем запрос к Telegram Bot API для получения списка подписчиков канала
response = requests.get(f'https://api.telegram.org/bot{telegram_token}/getChatMembersCount?chat_id={telegram_channel_id}')
data = json.loads(response.text)
subscriber_count = data.get('result', 0)
return subscriber_count
def send_event(subscribers):
# Отправляем запрос к Метрике API для передачи данных о количестве подписчиков в Яндекс.Метрику
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {'event1': 'channel_subscribers', 'goal_id': yandex_metrika_goal_id, 'data': f'{{"subscribers": {subscribers}}}'}
response = requests.post(f'https://mc.yandex.ru/watch/{yandex_metrika_goal_id}', headers=headers, data=data)
if response.status_code != 200:
print(f'Failed to send event to Yandex.Metrika: {response.text}')
else:
print('Event sent successfully')
if __name__ == '__main__':
start_bot()
```
Для использования данного кода вам необходимо выполнить следующие шаги:
1. Зарегистрируйте бота в Telegram, получите его токен и ID канала, в который пользователи должны подписываться.
2. Получите ID вашей цели в Яндекс.Метрике и замените значение переменной `yandex_metrika_goal_id` в коде.
3. Замените значение переменной `telegram_token` на ваш токен от Telegram Bot API.
4. Замените значение переменной `telegram_channel_id` на ID вашего канала в Telegram.
5. Запустите скрипт на выполнение.
После запуска скрипт будет периодически проверять наличие новых публикаций в канале и отправлять информацию о количестве подписчиков в Яндекс.Метрику через событие "channel_subscribers".