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