Closed nqpz closed 5 years ago
Jeg synes, det er en god idé.
Lige nu gemmes der kun en liste af navne i filen on_channel/#diku
.
Jeg ved ikke hvor det bedste sted at lægge det er, men evt. en off_channel/#diku
?
Så kunne man i begge tilfælde gemme et timestamp for hvornår personen sidst joinede eller partede:
simon 1552906642
secret_hitler 1552906641
Jeg synes det er sødt at I er ved at genopfinde hjulet, men vi har altså checkCooldown
. Den kan jo bare kaldes således:
if checkCooldown "velkomst_$EGGS_USER" $((60 * 60 * 24)); then
echo "OHØJ"
fi
Jeg ved godt den ikke opfylder @nqpz' krav, men er det så vigtigt? Dem der hele tiden logger af på får jo så bare ikke velkomst de efterfølgende gange, med mindre der er gået X antal sekunder.
@svip: Smart med checkCooldown
! Den skal gerne huske joins og parts separat og gøre det for hver kanal, hvis man går ud af én kanal men ikke er gået ud af en anden. Ellers kommer der nogle spøjse hjørnetilfælde.
Evt. checkCooldown "joined/$EGGS_WHERE/$EGGS_USER" $((60 * 60 * 24))
? Det kan vi evt. refaktorisere hooks/channel_part/05register_part
til også at bruge. Hvis vi gør det, er der nogle steder (grep -r on_channel
) som med fordel kan laves om til en eggspi-kommando der udtrækker listen fra joined/*/#channel
i stedet.
Og evt. sikre at checkCooldown
kan tage mappenavne som argument og mkdir -p
'e dem om nødvendigt. (Jeg ved forresten ikke om kommandoen escaper for at undgå fx backslashes i navne og kanalnavne.)
Alle tegn pånær /
er tilladt i et filnavn. Så bare brug end understreg, med mindre du rigtig gerne vil have den mappestruktur? Såsom joined_${EGGS_WHERE}_${EGGS_USER}
, det er jo til at forstå. Man kan bare lige kalde checkCooldown
når folk logger ud også, bare uden at bruge værdien til noget. Eller lave et eggspi
-kald som bare er til formålet at oprette for checkCooldown
(som også overskriver, fordi det gør checkCooldown
ikke).
Tag en hash a brugernavnet. Alle gode systemer hasher alting! Jeg er ved at lære at bruge Nix, og der bliver stierne sådan nogle lækre lange hashes.
Nogle af kaldene til on_channel/...
bruges til at hive et tilfældigt navn ud på nogen. Så hvis man hasher eller forsimpler et navn, kan det ikke blive brugt direkte i de kald. Så med mindre der er et formål med at hashe eller forsimple navnene, ville det betyde at de funktioner ikke kunne omskrives til at bruge de her filer.
Og hvis filen hedder joined_${EGGS_WHERE}_${EGGS_USER}
frem for fx joined/${EGGS_WHERE}/${EGGS_USER}
, skal informationen post-processeres i højere grad.
Jeg vil blande mig uden om og lade den der ønsker at implementere det komme med et forslag og dem der gerne vil snakke om muligheder uden at ændre på noget gøre det.
Jeg synes godt om en checkCooldown-løsning.
Nu var concieggs lige på den forkerte side af et netsplit og spyttede 55 velkomstbeskeder ud på få minutter. Det og ovenstående problem kan vel løses ved at have en global cooldown på måske 1 minut og så en brugerspecifik cooldown på 2 timer?
Vistnok løst i ce0334a8ceb52b8bc77922958e71e6247702fe75. Lad os se, om det virker i prod.
Jeg tror, det virker, som det skal. Tak til @svip for at foreslå en god løsning!
Det er hyggeligt at concieggs siger velkommen til folk, men jeg synes at det lidt bryder illusionen at sige velkommen til nogen der kun har været væk i et par minutter, især fordi det sker rimelig ofte (nogle IRC-klienter er af tvivlsom kvalitet).
Jeg tror ikke det er så svært at holde styr på hvem der er on- og offline. Faktisk tror jeg allerede at @sshine lavede noget af det arbejde i #39 -- se fx scriptet
hooks/channel_part/05register_part
der bliver kørt hver gang nogen logger af. Jeg er ikke klar over om der lige nu bliver gemt hvornår folk logger af, men det ville så være nødvendigt at (midlertidigt) gemme for at kunne tjekke om de skal have en velkomstbesked når de logger på igen.Det er i hvert fald min holdning!