}
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,
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 {
}
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;
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'};