65 lines
3.1 KiB
JavaScript
65 lines
3.1 KiB
JavaScript
// PRUEBA E2E del flujo de moderación desde Discord:
|
|
// 1) Crear un post falso en cuarentena (published=0)
|
|
// 2) Enviar la notificación real al webhook de moderación (con links)
|
|
// 3) Simular aprobación con token bueno -> verificar que se publica
|
|
const Database = require("better-sqlite3");
|
|
const db = new Database("./data/worst-scan.db");
|
|
|
|
// Post de prueba (va a ser BORRADO despues de la prueba)
|
|
const gid = "999999999";
|
|
const existing = db.prepare("SELECT id FROM posts WHERE gid = ?").get(gid);
|
|
let postId;
|
|
if (existing) {
|
|
postId = existing.id;
|
|
db.prepare("UPDATE posts SET published=0, title=?, tags=? WHERE id=?").run(
|
|
"TEST - Prueba de moderacion desde Discord",
|
|
JSON.stringify(["doujinshi", "lolicon", "translated"]),
|
|
postId
|
|
);
|
|
console.log("Post de prueba actualizado, id:", postId);
|
|
} else {
|
|
const r = db.prepare(`
|
|
INSERT INTO posts (gid, title, title_jpn, artist, parody, tags, num_pages, source, cover_url, url, summary, slug, published, created_at, updated_at)
|
|
VALUES (?, ?, NULL, 'test-artist', 'original', ?, 30, 'nhentai', NULL, 'https://nhentai.net/g/999999999/', 'Post de prueba del flujo de moderacion.', ?, 0, datetime('now'), datetime('now'))
|
|
`).run(gid, "TEST - Prueba de moderacion desde Discord", JSON.stringify(["doujinshi", "lolicon", "translated"]), "test-prueba-moderacion-999999999");
|
|
postId = r.lastInsertRowid;
|
|
console.log("Post de prueba creado, id:", postId);
|
|
}
|
|
|
|
// Emular la notificacion de cuarentena (misma estructura que discord-moderation.ts)
|
|
const MOD_WEBHOOK = "https://discord.com/api/webhooks/1534274226108895352/C5PFCzy1xulhAMMVwOVwuUzRHg6Q22DJtut0NiSue13wBUi0ijezsZaGSofL6pJhcDoa";
|
|
const MOD_TOKEN = require("fs").readFileSync("./.env", "utf8").match(/DISCORD_MOD_TOKEN=(\w+)/)[1];
|
|
|
|
const base = `https://worstscan.xyz/api/review/${postId}?token=${encodeURIComponent(MOD_TOKEN)}`;
|
|
const payload = {
|
|
content: `🛡️ **PRUEBA - Manga en cuarentena** — 🚫 Tag prohibido: lolicon`,
|
|
embeds: [{
|
|
title: "TEST - Prueba de moderacion desde Discord",
|
|
description: [
|
|
`30 páginas por test-artist`,
|
|
``,
|
|
`**¿Qué hacés con este manga?**`,
|
|
`✅ [Aprobar y publicar](${base}&action=approve)`,
|
|
`🗑️ [Rechazar y eliminar](${base}&action=reject)`,
|
|
].join("\n"),
|
|
color: 0xef4444,
|
|
thumbnail: { url: `https://worstscan.xyz/api/cover/999999999` },
|
|
footer: { text: "worst-scan · PRUEBA - ignorar" },
|
|
timestamp: new Date().toISOString(),
|
|
}],
|
|
};
|
|
|
|
fetch(MOD_WEBHOOK, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify(payload),
|
|
}).then(async (res) => {
|
|
console.log("Webhook de moderacion:", res.status === 204 ? "OK (mensaje enviado a Discord)" : "error " + res.status);
|
|
console.log("\n=== MIRA TU DISCORD DE MODERACION: deberia haber llegado el aviso con links ===");
|
|
console.log("Links del mensaje:");
|
|
console.log(" Aprobar:", `${base}&action=approve`);
|
|
console.log(" Rechazar:", `${base}&action=reject`);
|
|
console.log("\nEl post esta en cuarentena (published=0). NO lo toques: voy a simular la aprobacion despues.");
|
|
db.close();
|
|
}).catch(e => { console.log("ERROR:", e.message); db.close(); });
|