From 8af43009b624e19550d844942deafebc4233f3c6 Mon Sep 17 00:00:00 2001 From: banan Date: Tue, 3 Dec 2024 15:16:15 +0100 Subject: [PATCH] =?UTF-8?q?Ozn=C3=A1men=C3=AD=20nov=C3=BDch=20=C4=8Dl?= =?UTF-8?q?=C3=A1nk=C5=AF=20kvalitn=C3=ADho=20magaz=C3=ADnu=20BUM!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/magazin.ts | 77 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/modules/magazin.ts diff --git a/src/modules/magazin.ts b/src/modules/magazin.ts new file mode 100644 index 0000000..58db034 --- /dev/null +++ b/src/modules/magazin.ts @@ -0,0 +1,77 @@ +import { TextChannel } from "discord.js"; +import { CClient, Modul } from "../utils/types"; +import { log } from "../utils/utils"; + +let client: CClient; + +let najdiClanek = /href="(?.+?)">\n *

(?.+?)<\/h2>/; + +let posledniNazev: string; +let posledniOdkaz: string; + +async function zkontrolovatNovinky() { + const stranka = await fetch("https://histmy.eu/BUM/clanky") + .then(r => r.text()) + .catch(e => log("chyba pri accessovani BUM stránky", e)); + + let nazevAOdkaz = najdiClanek.exec(stranka || ""); + + if (!nazevAOdkaz || !nazevAOdkaz.groups) return false; + + const nazevClanku = nazevAOdkaz.groups.nazev; + const odkazClanku = 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) + return; + + const zprava = `Vyšel nový článek v kvalitním magazínu BUM: **${posledniNazev}**! Přečtěte si ho zde: ${posledniOdkaz}`; + + const general = guilda.channels.cache.get("555779161067749448") as TextChannel; + if (!general) return log(new Error("general nenalezen")); + general.send(`<@&1313491870231564318> ${zprava}`); + + naplanovat(); +} + +const exp: Modul = { + on_ready: () => { + client = module.exports.client; + + urobit(); + } +}; + +module.exports = exp;