Fix multiple bug et optimisation
This commit is contained in:
parent
b0535af75c
commit
886bfa4b1e
2 changed files with 66 additions and 15 deletions
|
|
@ -121,12 +121,45 @@ class Goodbye(commands.Cog):
|
||||||
kuby_logger.error(f"[Goodbye] Police introuvable: {font_path}")
|
kuby_logger.error(f"[Goodbye] Police introuvable: {font_path}")
|
||||||
raise FileNotFoundError(f"Police introuvable: {font_path}")
|
raise FileNotFoundError(f"Police introuvable: {font_path}")
|
||||||
|
|
||||||
font_large = ImageFont.truetype(font_large_path, 70)
|
# Adapter le texte pour éviter les débordements et afficher correctement le nom
|
||||||
font_small = ImageFont.truetype(font_small_path, 50)
|
line1_text = "AU REVOIR"
|
||||||
|
line2_text = username.upper()
|
||||||
# Dessiner uniquement le nom du serveur (comme pour welcome)
|
line3_text = (server_name or "OMEGA KUBE").upper()
|
||||||
display_name = server_name if server_name else "OMEGA KUBE"
|
|
||||||
draw.text((325, 135), display_name, font=font_large, fill=(255,255,255))
|
text_area_left = 300
|
||||||
|
text_area_right = background.width - 20
|
||||||
|
text_area_width = text_area_right - text_area_left
|
||||||
|
text_area_center_x = text_area_left + text_area_width // 2
|
||||||
|
|
||||||
|
def fit_font(font_path, text, max_size, max_width):
|
||||||
|
size = max_size
|
||||||
|
while size > 10:
|
||||||
|
font = ImageFont.truetype(font_path, size)
|
||||||
|
bbox = draw.textbbox((0, 0), text, font=font)
|
||||||
|
w = bbox[2] - bbox[0]
|
||||||
|
if w <= max_width:
|
||||||
|
h = bbox[3] - bbox[1]
|
||||||
|
return font, w, h
|
||||||
|
size -= 2
|
||||||
|
font = ImageFont.truetype(font_path, 10)
|
||||||
|
bbox = draw.textbbox((0, 0), text, font=font)
|
||||||
|
return font, bbox[2] - bbox[0], bbox[3] - bbox[1]
|
||||||
|
|
||||||
|
font1, w1, h1 = fit_font(font_large_path, line1_text, 65, text_area_width)
|
||||||
|
font2, w2, h2 = fit_font(font_small_path, line2_text, 38, text_area_width)
|
||||||
|
font3, w3, h3 = fit_font(font_large_path, line3_text, 65, text_area_width)
|
||||||
|
|
||||||
|
spacing_1_2 = 12
|
||||||
|
spacing_2_3 = 12
|
||||||
|
total_height = h1 + spacing_1_2 + h2 + spacing_2_3 + h3
|
||||||
|
start_y = (background.height - total_height) // 2
|
||||||
|
|
||||||
|
y = start_y
|
||||||
|
draw.text((text_area_center_x - w1 // 2, y), line1_text, font=font1, fill=(255, 255, 255))
|
||||||
|
y += h1 + spacing_1_2
|
||||||
|
draw.text((text_area_center_x - w2 // 2, y), line2_text, font=font2, fill=(255, 255, 255))
|
||||||
|
y += h2 + spacing_2_3
|
||||||
|
draw.text((text_area_center_x - w3 // 2, y), line3_text, font=font3, fill=(255, 255, 255))
|
||||||
|
|
||||||
# Ajouter l'avatar
|
# Ajouter l'avatar
|
||||||
avatar = Image.open(io.BytesIO(avatar_bytes)).convert("RGBA").resize((224, 224), Image.LANCZOS)
|
avatar = Image.open(io.BytesIO(avatar_bytes)).convert("RGBA").resize((224, 224), Image.LANCZOS)
|
||||||
|
|
@ -188,9 +221,10 @@ class Goodbye(commands.Cog):
|
||||||
|
|
||||||
if img:
|
if img:
|
||||||
embed = disnake.Embed(
|
embed = disnake.Embed(
|
||||||
description=f"{member.mention} vient de nous quitter.\n\n{message_text}\n\n⌛ **Avait rejoint :** {joined_message}",
|
description=f"{member.mention} vient de nous quitter.\n\n{message_text}",
|
||||||
color=0x7289DA
|
color=0x9B59B6
|
||||||
)
|
)
|
||||||
|
embed.set_footer(text=f"avait rejoint · {joined_message}")
|
||||||
embed.set_image(url="attachment://goodbye.png")
|
embed.set_image(url="attachment://goodbye.png")
|
||||||
await channel.send(embed=embed, file=disnake.File(img, filename="goodbye.png"))
|
await channel.send(embed=embed, file=disnake.File(img, filename="goodbye.png"))
|
||||||
kuby_logger.info(f"[Goodbye] Message de départ avec image envoyé pour {member.name}")
|
kuby_logger.info(f"[Goodbye] Message de départ avec image envoyé pour {member.name}")
|
||||||
|
|
@ -198,9 +232,10 @@ class Goodbye(commands.Cog):
|
||||||
# Fallback : image non générée
|
# Fallback : image non générée
|
||||||
kuby_logger.warning(f"[Goodbye] Image non générée pour {member.name}, envoi d'un message texte")
|
kuby_logger.warning(f"[Goodbye] Image non générée pour {member.name}, envoi d'un message texte")
|
||||||
embed = disnake.Embed(
|
embed = disnake.Embed(
|
||||||
description=f"{member.mention} vient de nous quitter.\n\n{message_text}\n\n⌛ **Avait rejoint :** {joined_message}",
|
description=f"{member.mention} vient de nous quitter.\n\n{message_text}",
|
||||||
color=0x7289DA
|
color=0x9B59B6
|
||||||
)
|
)
|
||||||
|
embed.set_footer(text=f"avait rejoint · {joined_message}")
|
||||||
await channel.send(embed=embed)
|
await channel.send(embed=embed)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
|
|
@ -191,11 +191,27 @@ class Welcome(commands.Cog):
|
||||||
if welcome_dm_text and not member.bot:
|
if welcome_dm_text and not member.bot:
|
||||||
kuby_logger.info(f"✉️ [Welcome] Tentative d'envoi de DM à {member.name}")
|
kuby_logger.info(f"✉️ [Welcome] Tentative d'envoi de DM à {member.name}")
|
||||||
try:
|
try:
|
||||||
formatted_message = welcome_dm_text.format(
|
template_values = {
|
||||||
username=member.name,
|
# Alias populaires
|
||||||
servername=member.guild.name,
|
"user": member.mention,
|
||||||
member_count=member.guild.member_count
|
"username": member.name,
|
||||||
)
|
"member": member.mention,
|
||||||
|
"member_name": member.name,
|
||||||
|
"server": member.guild.name,
|
||||||
|
"servername": member.guild.name,
|
||||||
|
"guild": member.guild.name,
|
||||||
|
"guild_name": member.guild.name,
|
||||||
|
"member_count": member.guild.member_count,
|
||||||
|
"count": member.guild.member_count,
|
||||||
|
"members": member.guild.member_count,
|
||||||
|
}
|
||||||
|
|
||||||
|
class SafeDict(dict):
|
||||||
|
def __missing__(self, key):
|
||||||
|
return "{" + key + "}"
|
||||||
|
|
||||||
|
formatted_message = welcome_dm_text.format_map(SafeDict(template_values))
|
||||||
|
|
||||||
# On combine le texte et le GIF dans un Embed élégant pour masquer le lien brut
|
# On combine le texte et le GIF dans un Embed élégant pour masquer le lien brut
|
||||||
gif_url = "https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExNXV1NW02NTk0bGF2ZHcyMGFna2F6amRrbGpobGpsMHowOW5xa2E5eCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/ZtFuW4rsUbfrRzPauJ/giphy.gif"
|
gif_url = "https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExNXV1NW02NTk0bGF2ZHcyMGFna2F6amRrbGpobGpsMHowOW5xa2E5eCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/ZtFuW4rsUbfrRzPauJ/giphy.gif"
|
||||||
embed = disnake.Embed(
|
embed = disnake.Embed(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue