# TODO:
# - detect moves between groups
-# - message people when they sign up and we can't find them in the spreadsheet
require '../include/config.pm';
return @diffs;
}
+sub possibly_nag_user {
+ my ($dbh, $ua, $userid) = @_;
+
+ # See if we've nagged this user before.
+ my $q = $dbh->prepare('SELECT * FROM users_nagged WHERE userid=?');
+ $q->execute($userid);
+ if (defined($q->fetchrow_hashref)) {
+ return;
+ }
+
+ skv_log("Sender melding til $userid for å spørre om gruppe.");
+ my $response = $ua->post(
+ 'https://slack.com/api/conversations.open',
+ Content => JSON::XS::encode_json({ users => [ $userid ] }),
+ Content_type => 'application/json;charset=UTF-8',
+ Authorization => 'Bearer ' . $config::oauth_token
+ );
+ die $response->status_line if !$response->is_success;
+
+ my $im_json = JSON::XS::decode_json($response->decoded_content);
+ die "Something went wrong: " . $response->decoded_content if (!defined($im_json) || !$im_json->{'ok'});
+ my $channel_id = $im_json->{'channel'}{'id'};
+
+ 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!";
+
+ $response = $ua->post(
+ 'https://slack.com/api/chat.postMessage',
+ Content => JSON::XS::encode_json({ channel => $channel_id, text => $msg }),
+ Content_type => 'application/json;charset=UTF-8',
+ Authorization => 'Bearer ' . $config::oauth_token
+ );
+ my $msg_json = JSON::XS::decode_json($response->decoded_content);
+ 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);
+}
+
sub run {
@log = ();
skv_log("Siste sync startet: " . POSIX::ctime(time));
}
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);
} elsif ($#candidates == 0) {
my $name = $candidates[0];
$slack_userid_to_real_name{$userid} = $name;
PRIMARY KEY (channel, ts)
);
+CREATE TABLE users_nagged (
+ userid VARCHAR NOT NULL,
+ last_nag TIMESTAMP WITH TIME ZONE NOT NULL,
+ PRIMARY KEY (userid)
+);
+
CREATE VIEW current_reactions AS
SELECT userid, channel, ts, reaction
FROM ( SELECT DISTINCT ON (channel, ts, userid, reaction)
GRANT SELECT,INSERT ON TABLE reaction_log TO skvidarlang;
GRANT SELECT ON TABLE current_reactions TO skvidarlang;
GRANT SELECT,UPDATE,INSERT ON TABLE message_sheet_link TO skvidarlang;
-
-
+GRANT SELECT,INSERT ON TABLE users_nagged TO skvidarlang;