From b03f16478f94a24d2f28e44868bc1cb6e36d4acc Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Fri, 10 Nov 2023 17:12:51 +0100 Subject: [PATCH] Tell users what group they are part of when they sign up. --- bin/sync.pl | 32 +++++++++++++++++++++++++------- skvidarlang.sql | 3 ++- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/bin/sync.pl b/bin/sync.pl index 4351817..fbbe7d2 100644 --- a/bin/sync.pl +++ b/bin/sync.pl @@ -422,18 +422,27 @@ sub find_diff { } sub possibly_nag_user { - my ($dbh, $ua, $userid) = @_; + my ($dbh, $ua, $userid, $invitation_ts, $group) = @_; # See if we've nagged this user before. - my $q = $dbh->prepare('SELECT * FROM users_nagged WHERE userid=?'); - $q->execute($userid); + my $q = $dbh->prepare('SELECT * FROM users_nagged WHERE userid=? AND ts=?'); + $q->execute($userid, $invitation_ts); if (defined($q->fetchrow_hashref)) { return; } - my $msg = "Hei! Du meldte deg akkurat på trening, men vi klarer ikke å finne deg i en gruppe i regnearket. For at det skal være enklere for trenerne, ønsker vi gjerne at du går inn på https://regneark.skvidar.run/ og skriver deg inn der med samme navn som du bruker på Slack. Om du er usikker på hvilken gruppe som passer for deg, ta gjerne kontakt med en trener. Velkommen på trening og til klubben!"; + my $msg; + if (!defined($group)) { + $msg = "Hei! Du meldte deg akkurat på trening, men vi klarer ikke å finne deg i en gruppe i regnearket. For at det skal være enklere for trenerne, ønsker vi gjerne at du går inn på https://regneark.skvidar.run/ og skriver deg inn der med samme navn som du bruker på Slack. Om du er usikker på hvilken gruppe som passer for deg, ta gjerne kontakt med en trener. Velkommen på trening og til klubben!"; + skv_log("Sender Slack-melding til $userid for å spørre om gruppe."); + } elsif ($group eq '(flere grupper)') { + $msg = "Hei! Du meldte deg akkurat på trening, men du ser ut til å stå i flere forskjellige grupper i regnearket. For at det skal være enklere for trenerne, ønsker vi gjerne at du går inn på https://regneark.skvidar.run/ og retter der. Om du er usikker på hvilken gruppe som passer for deg, ta gjerne kontakt med en trener. Velkommen på trening!"; + skv_log("Sender Slack-melding til $userid for å spørre om gruppe."); + } else { + $msg = "Hei! Du er påmeldt gruppe *$group*. Om dette er feil, gå gjerne inn og endre på https://regneark.skvidar.run/. Vi gleder oss til å se deg på trening!"; + skv_log("Sender Slack-melding om at $userid er i gruppe $group."); + } - skv_log("Sender melding til $userid for å spørre om gruppe."); my $content = { channel => $config::invitation_channel, user => $userid, @@ -452,7 +461,7 @@ sub possibly_nag_user { die "Something went wrong: " . $response->decoded_content if (!defined($msg_json) || !$msg_json->{'ok'}); # Mark that we've sent the message, so it won't happen again. - $dbh->do('INSERT INTO users_nagged (userid, last_nag) VALUES (?, CURRENT_TIMESTAMP)', undef, $userid); + $dbh->do('INSERT INTO users_nagged (userid, ts, last_nag) VALUES (?, ?, CURRENT_TIMESTAMP)', undef, $userid, $invitation_ts); } sub db_connect { @@ -627,7 +636,7 @@ sub run { } if ($#candidates == -1) { skv_log("$slack_name ($userid) er påmeldt på Slack, men fant ikke et regneark-navn for dem."); - possibly_nag_user($dbh, $ua, $userid); + possibly_nag_user($dbh, $ua, $userid, $invitation_ts, undef); } elsif ($#candidates == 0) { my $name = $candidates[0]; $slack_userid_to_real_name{$userid} = $name; @@ -662,6 +671,15 @@ sub run { skv_log("$name er påmeldt flere steder på Slack; vet ikke hvilken som skal brukes."); } + # ...and possibly send welcome messages to remind them of groups. + for my $userid (@attending_userids) { + my $real_name = $slack_userid_to_real_name{$userid}; + next if (!defined($real_name)); + my $group = $assignments{$real_name}; + next if (!defined($group)); + possibly_nag_user($dbh, $ua, $userid, $invitation_ts, $group); + } + # Find the list of names to mark yellow. my %want_colors = (); my $main_sheet_rows = $main_sheet_json->{'sheets'}[0]{'data'}[0]{'rowData'}; diff --git a/skvidarlang.sql b/skvidarlang.sql index e1249c1..5f0db3b 100644 --- a/skvidarlang.sql +++ b/skvidarlang.sql @@ -25,8 +25,9 @@ CREATE TABLE message_sheet_link ( CREATE TABLE users_nagged ( userid VARCHAR NOT NULL, + ts VARCHAR NOT NULL, -- Of the invitation. last_nag TIMESTAMP WITH TIME ZONE NOT NULL, - PRIMARY KEY (userid) + PRIMARY KEY (userid, ts) ); CREATE TABLE group_membership_history ( -- 2.39.2