Johnounet пре 2 месеци
родитељ
комит
69523f19e0
1 измењених фајлова са 30 додато и 12 уклоњено
  1. 30 12
      chatbot.py

+ 30 - 12
chatbot.py

@@ -28,7 +28,7 @@ logger.addHandler(console_handler)
 load_dotenv()
 
 # Version du bot
-VERSION = "4.3.0"  # Modifiable selon la version actuelle
+VERSION = "4.3.1"  # Modifiable selon la version actuelle
 
 # Récupérer les variables d'environnement avec validation
 def get_env_variable(var_name, is_critical=True, default=None, var_type=str):
@@ -249,11 +249,11 @@ async def on_message(message):
     # Ignorer les messages du bot lui-même
     if message.author == bot.user:
         return
-        
+
     # Vérifier si le message provient du channel spécifique
     if message.channel.id != CHANNEL_ID:
         return
-        
+
     # Vérifier si le message contient des stickers
     if message.stickers:
         # Obtenir le serveur (guild) du message
@@ -280,8 +280,8 @@ async def on_message(message):
                 await message.channel.send("Aucun sticker personnalisé trouvé sur ce serveur.")
         else:
             await message.channel.send("Ce message ne provient pas d'un serveur.")
-        return 
-    
+        return
+
     # Vérifier si le message contient uniquement un emoji personnalisé
     emoji_pattern = re.compile(r'^<a?:\w+:\d+>$')
     content = message.content.strip()
@@ -299,28 +299,46 @@ async def on_message(message):
         else:
             await message.channel.send("Aucun emoji personnalisé trouvé sur ce serveur.")
         return
-        
+
     # Résolution des mentions dans le message
     resolved_content = message.content
     for user in message.mentions:
         # Remplacer chaque mention par le nom d'utilisateur
         resolved_content = resolved_content.replace(f"<@{user.id}>", f"@{user.display_name}")
-        
-    # Vérifier les pièces jointes pour les images
+
+    # Vérifier les pièces jointes pour les images et autres fichiers
     if message.attachments:
         image_count = 0
+        non_image_files = []
         too_large_images = []
         max_size = 5 * 1024 * 1024  # 5 Mo en octets
-
         for attachment in message.attachments:
+            is_image = False
+            # Vérifier le content_type si disponible
             if attachment.content_type and attachment.content_type.startswith('image/'):
+                is_image = True
+            else:
+                # Si content_type n'est pas disponible ou pas une image, vérifier l'extension
+                image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.tiff', '.svg']
+                if any(attachment.filename.lower().endswith(ext) for ext in image_extensions):
+                    is_image = True
+
+            if is_image:
                 image_count += 1
                 if attachment.size > max_size:
                     too_large_images.append(attachment.filename)
+            else:
+                non_image_files.append(attachment.filename)
+
+        # Vérifier la présence de fichiers non-image
+        if non_image_files:
+            file_list = ", ".join(non_image_files)
+            await message.channel.send(f"Erreur : Les fichiers suivants ne sont pas des images et ne sont pas pris en charge : {file_list}. Veuillez envoyer uniquement des images.")
+            return
 
         # Vérifier le nombre d'images
         if image_count > 1:
-            await message.channel.send("Erreur : Vous ne pouvez pas envoyer plus de trois images dans un seul message. Veuillez diviser votre envoi en plusieurs messages.")
+            await message.channel.send("Erreur : Vous ne pouvez pas envoyer plus d'une image en un seul message.")
             return
 
         # Vérifier la taille des images
@@ -341,7 +359,7 @@ async def on_message(message):
         }
     if "messages" not in conversation_history[channel_id]:
         conversation_history[channel_id]["messages"] = []
-        
+
     # Traitement des images dans le message
     image_url = None
     if message.attachments:
@@ -349,7 +367,7 @@ async def on_message(message):
             if attachment.content_type and attachment.content_type.startswith('image/'):
                 image_url = attachment.url
                 break
-                
+
     # Utiliser le contenu résolu (avec les mentions remplacées)
     prompt = resolved_content
     # Indiquer que le bot est en train de taper