better timeout

This commit is contained in:
Histmy 2023-06-05 14:36:03 +02:00
parent 6f1f79d058
commit f0d86bd1f0

View File

@ -8,7 +8,7 @@ import fetch from "node-fetch";
import { adminLog, formatCas, log, sendDM } from "../utils/utils";
import { emouty } from "../utils/emotes";
const zpravy = new Map<string, number[]>();
const zpravy = new Map<string, Map<string, number[]>>();
const dobaOmezení = 20_000;
let client: Client;
@ -52,17 +52,24 @@ const exp: Modul = {
pos: 1,
fun: (mes: Message) => {
const ted = Date.now();
const timestampy = zpravy.get(mes.content) || [];
const autor = mes.author.id;
if (!zpravy.has(autor)) {
zpravy.set(autor, new Map());
}
const uzivatel = zpravy.get(mes.author.id)!;
const timestampy = uzivatel.get(mes.content) ?? [];
const aktualni = timestampy.filter(timestamp => ted - timestamp < dobaOmezení);
aktualni.push(ted);
zpravy.set(mes.content, aktualni);
uzivatel.set(mes.content, aktualni);
const pocet = aktualni.length;
if (pocet < 7) return false;
(async () => {
if (mes.author.id == client.user?.id) return;
if (mes.author.id == client.user?.id) return mes.channel.send("uz nechci");
const adminRole = mes.member?.roles.cache.find(r => r.name == "admin");
if (adminRole) {
await mes.member?.roles.remove(adminRole).catch(e => log("nejde odebrat admin", e));
@ -114,9 +121,12 @@ const exp: Modul = {
// Garbage-colector na `zpravy`
setInterval(() => {
const ted = Date.now();
zpravy.forEach((val, key) => {
const aktualni = val.filter(timestamp => ted - timestamp < dobaOmezení);
if (!aktualni.length) zpravy.delete(key);
zpravy.forEach((mapa, uzivatel) => {
mapa.forEach((pocet, zprava) => {
const aktualni = pocet.filter(timestamp => ted - timestamp < dobaOmezení);
if (!aktualni.length) mapa.delete(zprava);
});
if (!mapa.size) zpravy.delete(uzivatel);
});
}, 60_000);
},