Browse Source

embed webhook support

master
gsd 4 weeks ago
parent
commit
cc4b575b71
  1. 4
      other_ext/webhook_helper.py
  2. 73
      user_ext/profile.py

4
other_ext/webhook_helper.py

@ -136,6 +136,10 @@ class Extension:
result = await self.core.loaded_extensions[executor](**kwargs) result = await self.core.loaded_extensions[executor](**kwargs)
else: else:
result = await executor(**kwargs) result = await executor(**kwargs)
if type(result) == list:
kwargs["message"] = message
return await result[0](**kwargs)
except NotFoundPlayerOnServer: except NotFoundPlayerOnServer:
return await message.channel.send(content=f"{user.mention}!\nДействие {payload.emoji} сообщило что игрок сейчас не играет на сервере!\nВозможен пиздеж и провокация!", delete_after=60) return await message.channel.send(content=f"{user.mention}!\nДействие {payload.emoji} сообщило что игрок сейчас не играет на сервере!\nВозможен пиздеж и провокация!", delete_after=60)
except Exception as err: except Exception as err:

73
user_ext/profile.py

@ -9,43 +9,54 @@ class Extension:
self.core = core self.core = core
@core.tree.command(name = "profile", description = "Проверить профиль") @core.tree.command(name = "profile", description = "Проверить профиль")
@discord.app_commands.describe(profile=core.ANY_INPUT) @discord.app_commands.describe(profile=core.ANY_INPUT)
async def check_profile(
interaction: discord.Interaction,
profile: str = ""
):
await interaction.response.defer(thinking=True)
player = await self.__call__(profile, interaction.user)
return await interaction.followup.send(embed=player.embed, ephemeral=False)
@core.tree.command(name = "profile_next", description = "Проверить профиль NEW VERSION")
@discord.app_commands.describe(profile=core.ANY_INPUT)
async def check_profile_next( async def check_profile_next(
interaction: discord.Interaction, interaction: discord.Interaction,
profile: str = "" 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) await interaction.response.defer(thinking=True)
player = await self.__call__(profile, interaction.user)
file = None player = await self.getPlayer(profile, interaction.user if interaction else discord_user)
filename = None file = None
if player.hasAnyConnect: filename = None
#create image if posible if player.hasAnyConnect:
try: #create image if posible
chartImage = await player.getGametimeViaImage() try:
filename = f"{player.steam64}.{int(time.time())}.png" chartImage = await player.getGametimeViaImage()
print(f"Size of image: {len(chartImage)} bytes") filename = f"{player.steam64}.{int(time.time())}.png"
file = discord.File(io.BytesIO(chartImage), filename=filename) print(f"Size of image: {len(chartImage)} bytes")
except: file = discord.File(io.BytesIO(chartImage), filename=filename)
traceback.print_exc() except:
pass traceback.print_exc()
pass
embed: discord.Embed = player.embedNext embed: discord.Embed = player.embedNext
if file and filename: if file and filename:
embed.set_image(url=f"attachment://{filename}") embed.set_image(url=f"attachment://{filename}")
if interaction:
return await interaction.followup.send(embed=embed, file=file, ephemeral=False) return await interaction.followup.send(embed=embed, file=file, ephemeral=False)
else: 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) 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, profile:str, discord_user: discord.Member): async def __call__(self, *args, **kwds):
steam64 = await self.core.GetSteam64OfDiscord(discord_user) return [self.processMessage]
player = await self.core.GetPlayer(profile, steam64) if profile else await self.core.GetPlayer(steam64, steam64)
return player
Loading…
Cancel
Save