fetch steam profile via API
All checks were successful
Build and Push Docker Image / build (push) Successful in 22s
All checks were successful
Build and Push Docker Image / build (push) Successful in 22s
This commit is contained in:
parent
ed22e552a1
commit
3a85af4028
2
bot.py
2
bot.py
@ -28,11 +28,13 @@ class DiscordBot(commands.Bot):
|
|||||||
Contains controls to interact with the bot via the Discord API.
|
Contains controls to interact with the bot via the Discord API.
|
||||||
"""
|
"""
|
||||||
in_game_channel_id: int
|
in_game_channel_id: int
|
||||||
|
steam_api_key: str
|
||||||
rcon_details: dict
|
rcon_details: dict
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(command_prefix="-", intents=Intents.all())
|
super().__init__(command_prefix="-", intents=Intents.all())
|
||||||
self.in_game_channel_id = int(getenv("SPIFFO__DISCORD_CHANNEL_ID"))
|
self.in_game_channel_id = int(getenv("SPIFFO__DISCORD_CHANNEL_ID"))
|
||||||
|
self.steam_api_key = getenv("SPIFFO__STEAM_API_KEY")
|
||||||
self.rcon_details = {
|
self.rcon_details = {
|
||||||
"host": getenv("SPIFFO__RCON_HOST"),
|
"host": getenv("SPIFFO__RCON_HOST"),
|
||||||
"port": getenv("SPIFFO__RCON_PORT"),
|
"port": getenv("SPIFFO__RCON_PORT"),
|
||||||
|
@ -7,6 +7,7 @@ import logging
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
import httpx
|
||||||
import aiofiles
|
import aiofiles
|
||||||
from discord import Embed, Colour
|
from discord import Embed, Colour
|
||||||
from discord.ext import commands, tasks
|
from discord.ext import commands, tasks
|
||||||
@ -24,14 +25,22 @@ class ZomboidUser:
|
|||||||
username: str
|
username: str
|
||||||
connection_type: str
|
connection_type: str
|
||||||
|
|
||||||
@property
|
|
||||||
def steam_profile_picture_url(self):
|
|
||||||
return f"https://steamcommunity.com/profiles/{self.steam_id}/profileimage?width=256"
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def steam_url(self):
|
def steam_url(self):
|
||||||
return f"https://steamcommunity.com/profiles/{self.steam_id}"
|
return f"https://steamcommunity.com/profiles/{self.steam_id}"
|
||||||
|
|
||||||
|
async def get_steam_profile_picture(self, steam_api_key: str):
|
||||||
|
if not steam_api_key:
|
||||||
|
log.warning("No steam API key, can't get profile picture.")
|
||||||
|
return
|
||||||
|
|
||||||
|
async with httpx.AsyncClient() as client:
|
||||||
|
response = await client.get(url=f"https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key={steam_api_key}&steamids={self.steam_id}")
|
||||||
|
response.raise_for_status()
|
||||||
|
|
||||||
|
data = response.json()
|
||||||
|
return data["response"]["players"][0]["avatar"]
|
||||||
|
|
||||||
|
|
||||||
class ConsoleCog(commands.Cog):
|
class ConsoleCog(commands.Cog):
|
||||||
"""
|
"""
|
||||||
@ -120,7 +129,7 @@ class ConsoleCog(commands.Cog):
|
|||||||
description="Player has joined the server",
|
description="Player has joined the server",
|
||||||
colour=Colour.brand_green()
|
colour=Colour.brand_green()
|
||||||
)
|
)
|
||||||
embed.set_image(url=user.steam_profile_picture_url)
|
embed.set_thumbnail(url=user.get_steam_profile_picture(self.bot.steam_api_key))
|
||||||
|
|
||||||
await channel.send(embed=embed)
|
await channel.send(embed=embed)
|
||||||
|
|
||||||
@ -154,7 +163,7 @@ class ConsoleCog(commands.Cog):
|
|||||||
description="Player has left the server",
|
description="Player has left the server",
|
||||||
colour=Colour.brand_red()
|
colour=Colour.brand_red()
|
||||||
)
|
)
|
||||||
embed.set_image(url=user.steam_profile_picture_url)
|
embed.set_thumbnail(url=user.get_steam_profile_picture(self.bot.steam_api_key))
|
||||||
|
|
||||||
await channel.send(embed=embed)
|
await channel.send(embed=embed)
|
||||||
|
|
||||||
|
@ -2,13 +2,20 @@ aiofiles==24.1.0
|
|||||||
aiohappyeyeballs==2.4.4
|
aiohappyeyeballs==2.4.4
|
||||||
aiohttp==3.11.9
|
aiohttp==3.11.9
|
||||||
aiosignal==1.3.1
|
aiosignal==1.3.1
|
||||||
|
anyio==4.7.0
|
||||||
attrs==24.2.0
|
attrs==24.2.0
|
||||||
bump2version==1.0.1
|
bump2version==1.0.1
|
||||||
|
certifi==2024.8.30
|
||||||
discord.py==2.4.0
|
discord.py==2.4.0
|
||||||
frozenlist==1.5.0
|
frozenlist==1.5.0
|
||||||
|
h11==0.14.0
|
||||||
|
httpcore==1.0.7
|
||||||
|
httpx==0.28.0
|
||||||
idna==3.10
|
idna==3.10
|
||||||
multidict==6.1.0
|
multidict==6.1.0
|
||||||
propcache==0.2.1
|
propcache==0.2.1
|
||||||
python-dotenv==1.0.1
|
python-dotenv==1.0.1
|
||||||
rcon==2.4.9
|
rcon==2.4.9
|
||||||
|
sniffio==1.3.1
|
||||||
|
typing_extensions==4.12.2
|
||||||
yarl==1.18.3
|
yarl==1.18.3
|
||||||
|
Reference in New Issue
Block a user