magazín - oznámení pro více článků
This commit is contained in:
parent
ac57039a3a
commit
a69c261a4d
@ -1,69 +1,90 @@
|
||||
import { TextChannel } from "discord.js";
|
||||
import { TextChannel, Utils } from "discord.js";
|
||||
import { CClient, Modul } from "../utils/types";
|
||||
import { log } from "../utils/utils";
|
||||
|
||||
let client: CClient;
|
||||
|
||||
const najdiClanek = /href="(?<odkaz>.+?)">\n *<h2>(?<nazev>.+?)<\/h2>/;
|
||||
const odkaz = "https://histmy.eu/BUM/clanky";
|
||||
|
||||
let posledniNazev: string;
|
||||
let posledniOdkaz: string;
|
||||
const najdiClanky = /href="clanek-(?<id>.+?)">\n *<h2>(?<nazev>.+?)<\/h2>/g;
|
||||
let clanky: RegExpExecArray[];
|
||||
|
||||
let idClanku: number = 0;
|
||||
let posledniId: number = 0;
|
||||
|
||||
async function zkontrolovatNovinky() {
|
||||
const stranka = await fetch("https://histmy.eu/BUM/clanky")
|
||||
const stranka = await fetch(odkaz)
|
||||
.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;
|
||||
if (stranka) {
|
||||
clanky = [...stranka.matchAll(najdiClanky)];
|
||||
}
|
||||
|
||||
if (!clanky || clanky.length === 0) {
|
||||
log("No articles found");
|
||||
return 0;
|
||||
}
|
||||
|
||||
const clanek = clanky[0];
|
||||
if (!clanek || !clanek.groups) {
|
||||
log("pici");
|
||||
return 0;
|
||||
}
|
||||
|
||||
idClanku = Number(clanek.groups.id);
|
||||
if (!idClanku) {
|
||||
log(new Error("neni id clanku"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Při spuštění bota
|
||||
if (!posledniNazev) {
|
||||
posledniNazev = nazevClanku;
|
||||
posledniOdkaz = odkazClanku;
|
||||
return false;
|
||||
if (!posledniId) {
|
||||
posledniId = idClanku;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Pokud vyšel nový článek
|
||||
if (posledniNazev !== nazevClanku) {
|
||||
posledniNazev = nazevClanku;
|
||||
posledniOdkaz = odkazClanku;
|
||||
return true;
|
||||
if (posledniId !== idClanku) {
|
||||
const pocetNovychClanku = idClanku - posledniId;
|
||||
posledniId = idClanku;
|
||||
return pocetNovychClanku;
|
||||
}
|
||||
|
||||
return false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
async function naplanovat() {
|
||||
setTimeout(urobit, 5 * 1000 * 60);
|
||||
}
|
||||
|
||||
async function urobit() {
|
||||
const guilda = client.guilds.cache.get("555779161067749446");
|
||||
async function poslatZpravu(pocetNovychClanku: number) {
|
||||
log(idClanku);
|
||||
const guilda = client.guilds.cache.get("1326675528710881280");
|
||||
|
||||
if (!guilda) return log(new Error("dobytcarna nenalezena"));
|
||||
|
||||
const novyClanek = await zkontrolovatNovinky();
|
||||
let zprava;
|
||||
|
||||
if (!novyClanek) {
|
||||
for (let i = 0; i < pocetNovychClanku; i++) {
|
||||
if (!clanky[i].groups) return 0;
|
||||
zprava = `Vyšel nový článek v kvalitním magazínu BUM: **${clanky[i].groups?.nazev}**\nPřečtěte si ho zde: ${odkaz}/${clanky[i].groups?.id}`;
|
||||
|
||||
const general = guilda.channels.cache.get("1326675528710881283") as TextChannel;
|
||||
if (!general) return log(new Error("general nenalezen"));
|
||||
general.send(`<@&1313491870231564318>\n${zprava}`);
|
||||
}
|
||||
}
|
||||
|
||||
async function naplanovat() {
|
||||
setTimeout(urobit, 1000 * 10);
|
||||
}
|
||||
|
||||
async function urobit() {
|
||||
const pocetNovychClanku = await zkontrolovatNovinky();
|
||||
|
||||
if (pocetNovychClanku === 0) {
|
||||
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"));
|
||||
general.send(`<@&1313491870231564318>\n${zprava}`);
|
||||
poslatZpravu(pocetNovychClanku);
|
||||
|
||||
naplanovat();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user