You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.0 KiB
62 lines
2.0 KiB
import discord
|
|
import traceback
|
|
import time
|
|
import io
|
|
|
|
class Extension:
|
|
core = None
|
|
def __init__(self, core):
|
|
self.core = core
|
|
@core.tree.command(name = "profile", description = "Проверить профиль")
|
|
@discord.app_commands.describe(profile=core.ANY_INPUT)
|
|
async def check_profile_next(
|
|
interaction: discord.Interaction,
|
|
profile: str = ""
|
|
):
|
|
return await self.processMessage(interaction, profile)
|
|
|
|
async def getPlayer(self, profile:str, discord_user: discord.Member):
|
|
steam64 = await self.core.GetSteam64OfDiscord(discord_user)
|
|
player = await self.core.GetPlayer(profile, steam64) if profile else await self.core.GetPlayer(steam64, steam64)
|
|
return player
|
|
|
|
async def processMessage(self,
|
|
interaction: discord.Interaction = None,
|
|
profile: str = "",
|
|
message: discord.Message = None,
|
|
discord_user: discord.Member = None
|
|
):
|
|
if interaction:
|
|
await interaction.response.defer(thinking=True)
|
|
|
|
player = await self.getPlayer(profile, interaction.user if interaction else discord_user)
|
|
file = None
|
|
filename = None
|
|
if player.hasAnyConnect:
|
|
#create image if posible
|
|
try:
|
|
chartImage = await player.getGametimeViaImage()
|
|
filename = f"{player.steam64}.{int(time.time())}.png"
|
|
print(f"Size of image: {len(chartImage)} bytes")
|
|
file = discord.File(io.BytesIO(chartImage), filename=filename)
|
|
except:
|
|
traceback.print_exc()
|
|
pass
|
|
|
|
embed: discord.Embed = player.embedNext
|
|
if file and filename:
|
|
embed.set_image(url=f"attachment://{filename}")
|
|
if interaction:
|
|
return await interaction.followup.send(embed=embed, file=file, ephemeral=False)
|
|
if message:
|
|
return await message.channel.send(embed=embed, file=file)
|
|
raise Exception('Unknown processor')
|
|
else:
|
|
if interaction:
|
|
return await interaction.followup.send(embed=embed, ephemeral=False)
|
|
if message:
|
|
return await message.channel.send(embed=embed, ephemeral=False)
|
|
raise Exception('Unknown processor')
|
|
|
|
async def __call__(self, *args, **kwds):
|
|
return [self.processMessage]
|