better timeout
This commit is contained in:
parent
6f1f79d058
commit
f0d86bd1f0
@ -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);
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user