genius-troll/detectors/suffixPrefixDetector.js

53 lines
1.6 KiB
JavaScript
Raw Normal View History

2025-11-20 21:56:50 +01:00
import detector from "./detector.js";
import { cleanMessageContent } from "../utils/clean.js";
2025-11-20 18:48:49 +01:00
const suffixes = [
", je crois",
...Array(10).fill('')
];
2025-11-20 21:56:50 +01:00
export default class SuffixPrefixDetector extends detector {
2025-11-20 18:48:49 +01:00
async createSpecificReply(message) {
const reference = await message.fetchReference().catch(() => null);
const isSelfTarget = (reference && reference.author.id === message.client.user?.id) ?? false;
2025-11-20 21:46:43 +01:00
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);
2025-11-20 18:48:49 +01:00
2025-11-20 21:46:43 +01:00
if (!match) {
2025-11-20 18:48:49 +01:00
return null;
}
2025-11-20 21:46:43 +01:00
// match[1] contient tout le texte avant le "quoi"
const prefixBrut = match[1];
2025-11-20 18:48:49 +01:00
2025-11-20 21:46:43 +01:00
return this.createResponse(prefixBrut, isSelfTarget);
}
2025-11-20 18:48:49 +01:00
2025-11-20 21:46:43 +01:00
createResponse(prefixBrut, isSelfTarget = false) {
// 2. On applique ta logique de nettoyage (trimPrefix) pour gérer le "ça"
let replyPrefix = trimPrefix(prefixBrut);
2025-11-20 18:48:49 +01:00
2025-11-20 21:46:43 +01:00
// 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;
2025-11-20 18:48:49 +01:00
}
2025-11-20 21:46:43 +01:00
// 4. On renvoie : Préfixe nettoyé + Feur
return (`${replyPrefix} feur ${suffixes[Math.floor(Math.random() * suffixes.length)]}`)
.trim()
.replaceAll(' ', ' ')
.replace(' ,', ',');
2025-11-20 18:48:49 +01:00
}
}
2025-11-20 21:46:43 +01:00
// Ta fonction (inchangée, elle sert à nettoyer le début)
2025-11-20 18:48:49 +01:00
function trimPrefix(prefix) {
return (prefix
.split(/(?=(?:ç|c)a)/).at(-1) ?? '')
.trim();
}