The begining
This commit is contained in:
commit
dee311e709
71 changed files with 8349 additions and 0 deletions
51
commandes/no_link.py
Executable file
51
commandes/no_link.py
Executable file
|
|
@ -0,0 +1,51 @@
|
|||
# utils/no_link.py
|
||||
import re
|
||||
import discord
|
||||
from discord.ext import commands
|
||||
import json
|
||||
import os
|
||||
|
||||
# Fichier JSON de configuration security
|
||||
SECURITY_FILE = "security.json"
|
||||
|
||||
def load_guild_security(guild_id: int) -> dict:
|
||||
"""Retourne la configuration d'un serveur."""
|
||||
if not os.path.isfile(SECURITY_FILE):
|
||||
return {}
|
||||
with open(SECURITY_FILE, "r") as f:
|
||||
data = json.load(f)
|
||||
return data.get(str(guild_id), {})
|
||||
|
||||
# Regex pour détecter les liens
|
||||
URL_REGEX = re.compile(r"(?i)\b((?:https?://|www\.)[^\s<>]+)\b")
|
||||
|
||||
class NoLink(commands.Cog):
|
||||
"""Supprime les messages contenant un lien si l'option anti_link est activée pour le serveur."""
|
||||
|
||||
def __init__(self, bot: commands.Bot) -> None:
|
||||
self.bot = bot
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_message(self, message: discord.Message) -> None:
|
||||
if message.author.bot or not message.guild:
|
||||
return
|
||||
|
||||
guild_settings = load_guild_security(message.guild.id)
|
||||
if not guild_settings.get("anti_link", False):
|
||||
return # Option désactivée → ne rien faire
|
||||
|
||||
if URL_REGEX.search(message.content):
|
||||
try:
|
||||
await message.delete()
|
||||
await message.channel.send(
|
||||
f"{message.author.mention} ⚠️ Les liens sont interdits sur ce serveur.",
|
||||
delete_after=5
|
||||
)
|
||||
except discord.Forbidden:
|
||||
print(f"Impossible de supprimer le message de {message.author} (permissions manquantes).")
|
||||
except Exception as exc:
|
||||
print(f"Erreur lors de la suppression du message : {exc}")
|
||||
|
||||
|
||||
async def setup(bot: commands.Bot) -> None:
|
||||
await bot.add_cog(NoLink(bot))
|
||||
Loading…
Add table
Add a link
Reference in a new issue