import detector from "./detector.js";
import { cleanMessageContent } from "../utils/strings.js";

const suffixes = [
  ", je crois",
  ...Array(10).fill('')
];

export default class SuffixPrefixDetector extends detector {
  async createSpecificReply(message) {
    const reference = await message.fetchReference().catch(() => null);
    const isSelfTarget = (reference && reference.author.id === message.client.user?.id) ?? false;

    const text = cleanMessageContent(message);

    // 1. Regex simple : On capture TOUT ce qu'il y a avant le mot "quoi" (Groupe 1)
    // (?:^|\s) assure qu'on ne coupe pas "pourquoi"
    const match = text.match(/^(.*)(?:^|\s)quoi(?:\W|$)/i);

    if (!match) {
      return null;
    }

    // match[1] contient tout le texte avant le "quoi"
    const prefixBrut = match[1];

    return this.createResponse(prefixBrut, isSelfTarget);
  }

  createResponse(prefixBrut, isSelfTarget = false) {
    // 2. On applique ta logique de nettoyage (trimPrefix) pour gérer le "ça"
    let replyPrefix = trimPrefix(prefixBrut);

    // 3. Sécurité anti-spam (> 7 mots)
    // On vérifie qu'il reste quelque chose après le trim
    if (!replyPrefix || replyPrefix.split(' ').length > 7) {
      return null; 
    }

    // 4. On renvoie : Préfixe nettoyé + Feur
    return (`${replyPrefix} feur ${suffixes[Math.floor(Math.random() * suffixes.length)]}`)
      .trim()
      .replaceAll('  ', ' ')
      .replace(' ,', ',');
  }
}

// Ta fonction (inchangée, elle sert à nettoyer le début)
function trimPrefix(prefix) {
  return (prefix
    .split(/(?=(?:ç|c)a)/).at(-1) ?? '')
    .trim();
}