''' Для решения данной задачи необходимо использовать API Twitch и Telegram. Для начала необходимо получить токен Twitch API и настроить webhook для получения уведомлений о начале трансляции. Для этого нужно выполнить следующие шаги: Зарегистрироваться на сайте Twitch и создать новое приложение, чтобы получить Client ID и Client Secret. Получить access_token для доступа к API Twitch. Для этого нужно отправить POST-запрос на URL https://id.twitch.tv/oauth2/token, указав в параметрах client_id, client_secret и grant_type. Пример запроса: ''' import requests client_id = "your_client_id" client_secret = "your_client_secret" response = requests.post("https://id.twitch.tv/oauth2/token", params={ "client_id": client_id, "client_secret": client_secret, "grant_type": "client_credentials" }) access_token = response.json()["access_token"] ''' Настроить webhook для получения уведомлений о начале трансляции. Для этого нужно отправить POST-запрос на URL https://api.twitch.tv/helix/eventsub/subscriptions, указав в заголовках параметры Authorizationи Client-ID и в теле запроса параметры типа события, URL-адрес обработчика и другие параметры. Пример запроса: ''' import requests import json def create_twitch_webhook(access_token, callback_url): headers = { "Authorization": f"Bearer {access_token}", "Client-ID": "your_client_id", "Content-Type": "application/json", } data = { "type": "stream.online", "version": "1", "condition": { "broadcaster_user_id": "your_twitch_user_id" }, "transport": { "method": "webhook", "callback": callback_url, "secret": "your_secret_key" } } response = requests.post("https://api.twitch.tv/helix/eventsub/subscriptions", headers=headers, data=json.dumps(data)) response.raise_for_status() return response.json()["data"][0]["id"] ''' Далее необходимо создать бота в Telegram и получить его токен, чтобы отправлять уведомления. Для этого нужно написать боту @BotFather и следовать инструкциям. После получения токенов Twitch API и Telegram можно написать код на Python, который будет проверять начало трансляции на Twitch и отправлять оповещение в Telegram, если уведомление по текущей трансляции еще не было отправлено. В качестве хранилища информации о трансляциях можно использовать базу данных или файл. Вот пример кода, который можно использовать для решения задачи: ''' import requests import json import sqlite3 import telegram import time # Twitch API access token and user ID TWITCH_ACCESS_TOKEN = "your_twitch_access_token" TWITCH_USER_ID = "your_twitch_user_id" # Telegram bot token and chat ID TELEGRAM_BOT_TOKEN = "your_telegram_bot_token" TELEGRAM_CHAT_ID = "your_telegram_chat_id" # Database connection conn = sqlite3.connect('twitch_notifications.db') cursor = conn.cursor() # Create events table if it doesn't exist cursor.execute(""" CREATE TABLE IF NOT EXISTS events ( id INTEGER PRIMARY KEY AUTOINCREMENT, event_id TEXT, event_time INTEGER ) """) conn.commit() # Twitch API headers twitch_headers = { "Authorization": f"Bearer {TWITCH_ACCESS_TOKEN}", "Client-ID": "your_twitch_client_id", } # Telegram bot bot = telegram.Bot(token=TELEGRAM_BOT_TOKEN) # Telegram message template message_template ="🔴 Началась трансляция на Twitch: {channel_name}\n{stream_title}\n{stream_url}" def check_stream(): # Twitch API URL for checking current live streams url = f"https://api.twitch.tv/helix/streams?user_id={TWITCH_USER_ID}" response = requests.get(url, headers=twitch_headers) response.raise_for_status() data = response.json()["data"] if data: # There is a live stream stream_id = data[0]["id"] stream_title = data[0]["title"] stream_url = f"https://www.twitch.tv/{data[0]['user_login']}" event_time = int(time.time()) # Check if the event has already been notified cursor.execute("SELECT * FROM events WHERE event_id=?", (stream_id,)) event = cursor.fetchone() if not event: # Notify about the event message = message_template.format(channel_name=data[0]['user_name'], stream_title=stream_title, stream_url=stream_url) bot.send_message(chat_id=TELEGRAM_CHAT_ID, text=message) # Save the event to the database cursor.execute("INSERT INTO events (event_id, event_time) VALUES (?, ?)", (stream_id, event_time)) conn.commit() else: # There is no live stream print("No live streams found") # Schedule the next check in 5 minutes time.sleep(300) check_stream() # Close the database connection conn.close() ''' Этот код проверяет текущий поток на Twitch, отправляет уведомление в Telegram, если уведомление по текущей трансляции еще не было отправлено, и сохраняет информацию о событии в базу данных. Затем он ждет 5 минут и повторяет процесс. '''