Merge branch 'main' into 'dev'
# Conflicts: # commandes/ticket/__init__.py
This commit is contained in:
commit
9f92d0d212
8 changed files with 761 additions and 149 deletions
|
|
@ -12,6 +12,14 @@ SETTINGS_FILE = os.path.join(DATA_DIR, "security_settings.json")
|
|||
# Créer le dossier data/ s'il n'existe pas
|
||||
os.makedirs(DATA_DIR, exist_ok=True)
|
||||
|
||||
def escape_mentions(text: str) -> str:
|
||||
"""Échappe les mentions @everyone et @here pour éviter les notifications involontaires"""
|
||||
if not text:
|
||||
return text
|
||||
# Utilise un zero-width space pour briser la mention Discord
|
||||
return text.replace("@everyone", "@\u200beveryone").replace("@here", "@\u200bhere")
|
||||
|
||||
|
||||
def load_settings(guild_id: int) -> dict:
|
||||
"""Charge les paramètres de sécurité pour un serveur"""
|
||||
if not os.path.exists(SETTINGS_FILE):
|
||||
|
|
@ -99,7 +107,7 @@ class RulesContentModal(disnake.ui.Modal):
|
|||
self.on_update_callback = on_update_callback
|
||||
|
||||
async def callback(self, interaction: disnake.Interaction):
|
||||
self.settings["rules_content"] = self.content_input.value
|
||||
self.settings["rules_content"] = escape_mentions(self.content_input.value)
|
||||
save_settings(self.guild_id, self.settings)
|
||||
|
||||
if self.on_update_callback:
|
||||
|
|
@ -438,10 +446,11 @@ class RulesCog(commands.Cog):
|
|||
view = RulesAcceptButton(channel.guild.id, accept_role_id)
|
||||
|
||||
if message_type == "simple":
|
||||
# Message simple
|
||||
# Message simple - échappe les mentions @everyone/@here pour éviter les notifications involontaires
|
||||
safe_content = content.replace("@everyone", "@\u200beveryone").replace("@here", "@\u200bhere")
|
||||
text_message = (
|
||||
f"📜 **{title}**\n\n"
|
||||
f"{content}\n\n"
|
||||
f"{safe_content}\n\n"
|
||||
"Bienvenue ! Pour accéder à l'ensemble des canaux du serveur, "
|
||||
"vous devez accepter le règlement en cliquant sur le bouton ci-dessous.\n\n"
|
||||
"En acceptant, vous confirmez avoir lu et compris les règles du serveur."
|
||||
|
|
@ -459,19 +468,29 @@ class RulesCog(commands.Cog):
|
|||
return None
|
||||
|
||||
else: # embed
|
||||
# Échappe les mentions @everyone/@here pour éviter les notifications involontaires
|
||||
safe_content = content.replace("@everyone", "@\u200beveryone").replace("@here", "@\u200bhere")
|
||||
|
||||
# Utilise un Container avec TextDisplay pour un meilleur rendu du texte (markdown supporté)
|
||||
components = [
|
||||
disnake.ui.Container(
|
||||
disnake.ui.TextDisplay(safe_content)
|
||||
)
|
||||
]
|
||||
|
||||
# Créer l'embed
|
||||
embed = disnake.Embed(
|
||||
title=title,
|
||||
description=content,
|
||||
color=0x2b2d31
|
||||
)
|
||||
|
||||
embed.set_footer(text="Cliquez sur le bouton ci-dessous pour accepter le règlement")
|
||||
|
||||
# Envoyer seulement l'embed
|
||||
# Envoyer l'embed avec le container et la view
|
||||
try:
|
||||
message = await channel.send(
|
||||
embed=embed,
|
||||
components=components,
|
||||
view=view
|
||||
)
|
||||
return message
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue