import { TextChannel } from "discord.js"; import { CClient, Modul } from "../utils/types"; import { betterFetch, log, sendWithoutReply } from "../utils/utils"; let client: CClient; const najdiClanek = /href="(?.+?)">\n *

(?.+?)<\/h2>/; let posledniNazev: string; let posledniOdkaz: string; async function zkontrolovatNovinky() { const stranka = await betterFetch("https://histmy.eu/BUM/clanky") .then(r => r.text()) .catch(e => log("chyba pri accessovani BUM stránky", e)); const nazevAOdkaz = najdiClanek.exec(stranka || ""); if (!nazevAOdkaz || !nazevAOdkaz.groups) return false; const nazevClanku = nazevAOdkaz.groups.nazev; const odkazClanku = "https://histmy.eu/BUM/" + nazevAOdkaz.groups.odkaz; if (!nazevClanku) { log(new Error("neni nazev clanku")); return false; } // Při spuštění bota if (!posledniNazev) { posledniNazev = nazevClanku; posledniOdkaz = odkazClanku; return false; } // Pokud vyšel nový článek if (posledniNazev !== nazevClanku) { posledniNazev = nazevClanku; posledniOdkaz = odkazClanku; return true; } return false; } async function naplanovat() { setTimeout(urobit, 5 * 1000 * 60); } async function urobit() { const guilda = client.guilds.cache.get("555779161067749446"); if (!guilda) return log(new Error("dobytcarna nenalezena")); const novyClanek = await zkontrolovatNovinky(); if (!novyClanek) { naplanovat(); return; } const zprava = `Vyšel nový článek v kvalitním magazínu BUM: **${posledniNazev}**\nPřečtěte si ho zde: ${posledniOdkaz}`; const general = guilda.channels.cache.get("555779161067749448") as TextChannel; if (!general) return log(new Error("general nenalezen")); sendWithoutReply(general, `<@&1313491870231564318>\n${zprava}`); naplanovat(); } const exp: Modul = { on_clientReady: () => { client = module.exports.client; urobit(); } }; module.exports = exp;