Простой код с интеграцией Spotify и Steam. Работает на Telethon. Инструкции в config.py main.py import asyncio from telethon import TelegramClient from telethon.tl import functions import spotipy import logging from spotipy.oauth2 import SpotifyOAuth from steamwebapi.api import ISteamUser from config import ( API_ID, API_HASH, SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET, SPOTIPY_REDIRECT_URI, SCOPE, STEAM_API_KEY, STEAM_USER_ID ) use_spotify = SPOTIPY_CLIENT_ID != '-' and SPOTIPY_CLIENT_SECRET != '-' use_steam = STEAM_API_KEY != '-' and STEAM_USER_ID != '-' logging.basicConfig( level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[logging.StreamHandler()] ) if not use_spotify and not use_steam: raise ValueError("Ошибка: Заполните конфиг хотя бы для одного из API (Spotify или Steam).") if use_spotify: sp = spotipy.Spotify(auth_manager=SpotifyOAuth( SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET, SPOTIPY_REDIRECT_URI, scope=SCOPE)) if use_steam: steam_api = ISteamUser(steam_api_key=STEAM_API_KEY) client = TelegramClient( 'userbot_session', API_ID, API_HASH, device_model="iPhone 13 Pro", system_version="iOS 15.4", app_version="8.5.1" ) async def update_status(): last_bio = '' while True: bio_parts = [] # Spotify if use_spotify: current_track = await asyncio.to_thread(sp.current_user_playing_track) if current_track and current_track['is_playing']: artist = current_track['item']['artists'][0]['name'] song = current_track['item']['name'] bio_parts.append(f" Spotify: {artist} — {song}") # Steam if use_steam: steam_data = await asyncio.to_thread(steam_api.get_player_summaries, STEAM_USER_ID) player = steam_data['response']['players'][0] if 'gameextrainfo' in player: current_game = player['gameextrainfo'] bio_parts.append(f" Играю в {current_game}") bio = " | ".join(bio_parts) if not bio: bio = '' if bio != last_bio: await client(functions.account.UpdateProfileRequest(about=bio)) logging.info(f"Обновил био: '{bio}'") last_bio = bio else: logging.debug("Био не изменилось.") await asyncio.sleep(30) async def main(): await client.start() if use_spotify: auth_url = sp.auth_manager.get_authorize_url() print(f'Авторизуйся в Spotify по ссылке: {auth_url}') print("Автостатус запущен.") await update_status() if __name__ == '__main__': asyncio.run(main()) Python import asyncio from telethon import TelegramClient from telethon.tl import functions import spotipy import logging from spotipy.oauth2 import SpotifyOAuth from steamwebapi.api import ISteamUser from config import ( API_ID, API_HASH, SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET, SPOTIPY_REDIRECT_URI, SCOPE, STEAM_API_KEY, STEAM_USER_ID ) use_spotify = SPOTIPY_CLIENT_ID != '-' and SPOTIPY_CLIENT_SECRET != '-' use_steam = STEAM_API_KEY != '-' and STEAM_USER_ID != '-' logging.basicConfig( level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[logging.StreamHandler()] ) if not use_spotify and not use_steam: raise ValueError("Ошибка: Заполните конфиг хотя бы для одного из API (Spotify или Steam).") if use_spotify: sp = spotipy.Spotify(auth_manager=SpotifyOAuth( SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET, SPOTIPY_REDIRECT_URI, scope=SCOPE)) if use_steam: steam_api = ISteamUser(steam_api_key=STEAM_API_KEY) client = TelegramClient( 'userbot_session', API_ID, API_HASH, device_model="iPhone 13 Pro", system_version="iOS 15.4", app_version="8.5.1" ) async def update_status(): last_bio = '' while True: bio_parts = [] # Spotify if use_spotify: current_track = await asyncio.to_thread(sp.current_user_playing_track) if current_track and current_track['is_playing']: artist = current_track['item']['artists'][0]['name'] song = current_track['item']['name'] bio_parts.append(f" Spotify: {artist} — {song}") # Steam if use_steam: steam_data = await asyncio.to_thread(steam_api.get_player_summaries, STEAM_USER_ID) player = steam_data['response']['players'][0] if 'gameextrainfo' in player: current_game = player['gameextrainfo'] bio_parts.append(f" Играю в {current_game}") bio = " | ".join(bio_parts) if not bio: bio = '' if bio != last_bio: await client(functions.account.UpdateProfileRequest(about=bio)) logging.info(f"Обновил био: '{bio}'") last_bio = bio else: logging.debug("Био не изменилось.") await asyncio.sleep(30) async def main(): await client.start() if use_spotify: auth_url = sp.auth_manager.get_authorize_url() print(f'Авторизуйся в Spotify по ссылке: {auth_url}') print("Автостатус запущен.") await update_status() if __name__ == '__main__': asyncio.run(main()) config.py # Конфигурация для Telegram # Получи свои API_ID и API_HASH на my.telegram.org API_ID = API_HASH = "" # Конфигурация Spotify API # 1. Создай приложение здесь: https://developer.spotify.com/dashboard/applications # 2. Укажи в настройках приложения Redirect URI ('http://localhost/') # 3. Скопируй Client ID и Client Secret ниже # 4. При запуске скрипта в консоли появится ссылка авторизации Spotify: # - Перейди по ней в браузере # - После авторизации тебя перенаправит на страницу localhost # - Скопируй ссылку из адресной строки браузера (она будет содержать '?code=') и вставь её обратно в консоль # Если хочешь отключить Spotify — поставь '-' в полях SPOTIPY_CLIENT_ID и SPOTIPY_CLIENT_SECRET SPOTIPY_CLIENT_ID = '' SPOTIPY_CLIENT_SECRET = '' SPOTIPY_REDIRECT_URI = 'http://localhost/' SCOPE = 'user-read-currently-playing' # Конфигурация Steam API # 1. Получи API ключ Steam здесь: https://steamcommunity.com/dev/apikey # 2. Получи свой Steam ID64 здесь: https://steamid.io/ # Если хочешь отключить Steam — поставь '-' в полях STEAM_API_KEY и STEAM_USER_ID STEAM_API_KEY = '-' STEAM_USER_ID = '-' # ВАЖНО: # Если отключишь все API (Spotify, Steam), бот выдаст ошибку. # Должен быть включён хотя бы один сервис. Python # Конфигурация для Telegram # Получи свои API_ID и API_HASH на my.telegram.org API_ID = API_HASH = "" # Конфигурация Spotify API # 1. Создай приложение здесь: https://developer.spotify.com/dashboard/applications # 2. Укажи в настройках приложения Redirect URI ('http://localhost/') # 3. Скопируй Client ID и Client Secret ниже # 4. При запуске скрипта в консоли появится ссылка авторизации Spotify: # - Перейди по ней в браузере # - После авторизации тебя перенаправит на страницу localhost # - Скопируй ссылку из адресной строки браузера (она будет содержать '?code=') и вставь её обратно в консоль # Если хочешь отключить Spotify — поставь '-' в полях SPOTIPY_CLIENT_ID и SPOTIPY_CLIENT_SECRET SPOTIPY_CLIENT_ID = '' SPOTIPY_CLIENT_SECRET = '' SPOTIPY_REDIRECT_URI = 'http://localhost/' SCOPE = 'user-read-currently-playing' # Конфигурация Steam API # 1. Получи API ключ Steam здесь: https://steamcommunity.com/dev/apikey # 2. Получи свой Steam ID64 здесь: https://steamid.io/ # Если хочешь отключить Steam — поставь '-' в полях STEAM_API_KEY и STEAM_USER_ID STEAM_API_KEY = '-' STEAM_USER_ID = '-' # ВАЖНО: # Если отключишь все API (Spotify, Steam), бот выдаст ошибку. # Должен быть включён хотя бы один сервис. requirements.txt telethon==1.29.2 spotipy==2.23.0 steamwebapi==0.77