__version__ = (1, 0, 0) # ███╗░░░███╗███████╗░█████╗░██████╗░░█████╗░░██╗░░░░░░░██╗░██████╗░██████╗ # ████╗░████║██╔════╝██╔══██╗██╔══██╗██╔══██╗░██║░░██╗░░██║██╔════╝██╔════╝ # ██╔████╔██║█████╗░░███████║██║░░██║██║░░██║░╚██╗████╗██╔╝╚█████╗░╚█████╗░ # ██║╚██╔╝██║██╔══╝░░██╔══██║██║░░██║██║░░██║░░████╔═████║░░╚═══██╗░╚═══██╗ # ██║░╚═╝░██║███████╗██║░░██║██████╔╝╚█████╔╝░░╚██╔╝░╚██╔╝░██████╔╝██████╔╝ # ╚═╝░░░░░╚═╝╚══════╝╚═╝░░╚═╝╚═════╝░░╚════╝░░░░╚═╝░░░╚═╝░░╚═════╝░╚═════╝░ # © Copyright 2025 # ✈ https://t.me/mead0wssMods # scope: hikka_only # scope: hikka_min 1.3.3 # meta developer: @mead0wssMods # meta banner: https://x0.at/B0ze.png import aiohttp import asyncio from telethon import events from .. import loader, utils @loader.tds class SteamProfile(loader.Module): """Модуль для получения информации о пользователях Steam.""" strings = {"name": "Steam Profile"} def __init__(self): self.config = loader.ModuleConfig( loader.ConfigValue( "api_key", "", lambda: "Ваш API ключ Steam (https://steamcommunity.com/dev/apikey)", validator=loader.validators.Hidden(), ), loader.ConfigValue( "show_games", True, lambda: "Показ игр пользователя (True/False)", validator=loader.validators.Boolean(), ), ) async def steamprofilecmd(self, event): """Получить информацию об пользователе Steam.""" args = utils.get_args_raw(event) if not args: await event.edit("❌ Укажите никнейм Steam после команды.") return api_key = self.config.get("api_key") if not api_key: await event.edit("❌ API KEY неуказан в cfg! (https://steamcommunity.com/dev/apikey)") return persona_name = args.strip() await event.edit("⏱️ Получаю информацию...") await asyncio.sleep(5) steam_id = await self.get_steam_id(api_key, persona_name) if steam_id: player_info = await self.get_player_info(api_key, steam_id) owned_games = await self.get_owned_games(api_key, steam_id) if player_info is None or 'response' not in player_info or 'players' not in player_info['response']: await event.edit("❌ Ошибка: Не удалось получить информацию о пользователе.") return response_message = await self.send_profile_info(event, player_info, owned_games) await event.edit(response_message) else: await event.edit("❌ Ошибка: Никнейм не найден.") async def get_steam_id(self, api_key, persona_name): url = f"https://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/?key={api_key}&vanityurl={persona_name}" async with aiohttp.ClientSession() as session: async with session.get(url) as response: if response.status == 200: data = await response.json() if data['response']['success'] == 1: return data['response']['steamid'] return None async def get_player_info(self, api_key, steam_id): url = f"https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key={api_key}&steamids={steam_id}" async with aiohttp.ClientSession() as session: async with session.get(url) as response: if response.status == 200: return await response.json() return None async def get_owned_games(self, api_key, steam_id): url = f"https://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key={api_key}&steamid={steam_id}&include_appinfo=true&include_played_free_games=true" async with aiohttp.ClientSession() as session: async with session.get(url) as response: if response.status == 200: return await response.json() return None async def send_profile_info(self, event, player_info, owned_games): if player_info is None or 'response' not in player_info or 'players' not in player_info['response']: return "❌ Нет информации о пользователе." player = player_info['response']['players'][0] response = f"Информация о пользователе:\n" response += f"👤 Ник: {player['personaname']}\n" response += f"🔗 URL: {player['profileurl']}\n" response += f"🧑 Настоящее имя: {player.get('realname', 'Не указано')}\n" response += f"🔒 Видимость профиля: {'Открытый' if player['communityvisibilitystate'] == 3 else 'Закрытый'}\n" response += f"💬 Статус: {'Онлайн' if player['personastate'] == 1 else 'Оффлайн'}\n" response += f"🌍 Страна: {player.get('loccountrycode', 'Не указано')}\n" response += f"🖼️ Аватарка: {player['avatarfull']}\n\n" if self.config.get("show_games") and owned_games and 'games' in owned_games['response']: response += "Показ игр пользователя:\n" for game in owned_games['response']['games']: hours_played = game['playtime_forever'] / 60 response += f" - {game['name']} (Время игры: {hours_played:.2f} часов)\n" return response if response else "❌ Нет информации о пользователе."