EggsML
                                
                                 EggsML copied to clipboard
                                
                                    EggsML copied to clipboard
                            
                            
                            
                        Hold løbende styr på hvem der er online på IRC
concieggs bruger lige nu eggspi-kommandoen recentlyActive til at få en liste af nyligt aktive brugere baseret på hvem der har skrevet noget i de sidste N linjer.  Det bruges til bl.a. flaske- og fluen-kommandoen.
Det virker fint, bortset fra at nogle af de aktive brugere kan være logget af siden de har skrevet deres besked, hvilket kan være suboptimalt. Det er fx noget rod at krone en som slet ikke er online!
Problemet er at det tager lang tid at tjekke om nogen er online: concieggs skal sende en WHOIS til freenode for hver bruger, så det kan godt blive 5-10 whoises, og det er langsomt.
Det kan løses ved at det registreres når brugere logger på og af, så det gemmes i concieggs' database hvem der er online. Så er det trivielt at tjekke om nogen er på IRC eller ej. Der skal ikke gemmes hvornår folk er logget på og af, kun hvorvidt de er online eller offline.
"Niels G. W. Serup" [email protected] writes:
Det kan løses ved at det registreres når brugere logger på og af, så det gemmes i concieggs' database hvem der er online. Så er det trivielt at tjekke om nogen er på IRC eller ej.
Ligesom en voksion-IRC-klient!
\ Troels /\ Henriksen
Det ville også være fedt hvis den trackede det pr. kanal!
Fx. ifm. at få s/foo/bar/ til at ændre sidste besked på nuværende kanal, og ikke sidste besked anywhere.
Ja, eller at flaske var specifik for de senest aktive brugere på en given kanal.
Hvorfor er det så svært at implementere? Er vi bare dovne?
Come on, Danmark.
Vi kan altså godt implementere det her!
(Men jeg har ikke lige tid.)
Jeg har forsøgt at markere problemet som vigtigt.
Særligt har jeg maskeret det som et krav til opfyldelse af GDPR, fordi det er den nærmeste deadline vi har.
Vi kan jo ikke beskytte folks informationer om hvorvidt de er online, hvis vi ikke indsamler dem.
Der er nu hooks/channel_join/05register_join og hooks/channel_part/05register_part.
- 
[x] Registrér når det er concieggs der joiner, så den kan sende /namesi stedet.
- 
[x] Håndtér 353/366, så concieggs kan genopfriske listerne uden at alle forlader og kommer igen: 353 RPL_NAMREPLY "<channel> :[[@|+]<nick> [[@|+]<nick> [...]]]" 366 RPL_ENDOFNAMES "<channel> :End of /NAMES list" - To reply to a NAMES message, a reply pair consisting of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the server back to the client. If there is no channel found as in the query, then only RPL_ENDOFNAMES is returned. The exception to this is when a NAMES message is sent with no parameters and all visible channels and contents are sent back in a series of RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark the end.
Hvordan kan vi afgøre, om en given bruger ikke siger så meget men bare læser med på kanalen, eller reelt set ikke bruger kanalen, og bare er der?
@MikkelStorgaard: For at citere den oprindelige problembeskrivelse:
Der skal [...] kun [gemmes] hvorvidt [folk] er online eller offline.
Men du kan afgøre om nogen for nyligt har sagt noget vha. recentlyActive og om de er online ved at læse db/store/on_channel/#diku. (Der er endnu ikke nogen eggspi-kommandoer.)
On Wed, 02 May 2018 10:11:04 +0000, Simon Shine wrote:
@MikkelStorgaard: For at citere den oprindelige problembeskrivelse:
Der skal [...] kun [gemmes] hvorvidt [folk] er online eller offline.
Men du kan afgøre om nogen for nyligt har sagt noget vha.
recentlyActiveog om de er online ved at læsedb/store/on_channel/#diku. (Der er endnu ikke nogen eggspi-kommandoer.)
Og det vil helt klart give mening at lave en samlet eggspi-kommando isActive der laver nogle gode antagelser og bruger data fra begge kilder.
Eller gemmer hvornår man sidst har været aktiv i db/store/users/<bruger>/lastactive ved siden af filen lastmsg. Man kan egentlig bruge tidsstemplet på lastmsg, da filen ikke ændres af s//-krogen med mindre det er personen selv der aktiverer den, men det er måske ikke en garanti vi ønsker at fastkode.
Problemet er mestendels løst vha.
- 
Krogene hooks/channel_join/05register_joinoghooks/channel_part/05register_part.
- 
Den er nu gjort bevidst om når den selv joiner/parter. Når den gør det, kalder den eggspi/getNamesOnChannel [#kanal], som scanner$CONCIEGGS_IRC_DIR/outbaglæns efter sidste gang der er kaldt/NAMESpå#kanalog printer navnene. Det er fordi/NAMESbliver kørt automatisk når man joiner.
- [ ] Den registrerer stadig ikke når folk quitter.
- [ ] Den registrerer stadig ikke når folk skifter navn.
- [ ] Den fjerner ikke al viden om hvem som er på kanalen, når den selv forlader en kanal.
Så skal det være muligt at spørge concieggs:
concieggs: er der nogle frække fyre på linjen?
Og
<preben> concieggs: giv mig en ven
<concieggs> preben: sigurd er din nye ven!