mirror of
https://github.com/MuRuLOSE/limoka.git
synced 2026-06-18 15:14:18 +02:00
Added and updated repositories 2025-08-10 01:17:09
This commit is contained in:
119
mead0wsss/mead0wsMods/SteamProfile.py
Normal file
119
mead0wsss/mead0wsMods/SteamProfile.py
Normal file
@@ -0,0 +1,119 @@
|
||||
__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"<b>Информация о пользователе:</b>\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 += "<b>Показ игр пользователя:</b>\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 "❌ Нет информации о пользователе."
|
||||
Reference in New Issue
Block a user