$connection->on(each_message => sub {
my ($conn, $message) = @_;
+ my $now = [Time::HiRes::gettimeofday];
print STDERR "Message: $message->{'body'}\n";
my $json = JSON::XS::decode_json($message->{'body'});
eval {
if (exists($json->{'payload'}{'event'})) {
+ if (exists($json->{'payload'}{'event'}{'event_ts'}) &&
+ $json->{'payload'}{'event'}{'event_ts'} =~ /(\d+)\.(\d+)/) {
+ my $elapsed = Time::HiRes::tv_interval([$1, $2], $now);
+ printf STDERR "Message used %.1f ms to reach us.\n", 1e3 * $elapsed;
+ }
handle_event($json->{'payload'}{'event'});
}
};
my $user = $ev->{'user'};
if ($type eq 'message') {
- if ($ev->{'message'}{'text'} =~ /(20\d{2}-\d{2}-\d{2})/) {
+ if ($ev->{'text'} =~ /(20\d{2}-\d{2}-\d{2})/ || $ev->{'message'}{'text'} =~ /(20\d{2}-\d{2}-\d{2})/) {
# TODO: What if edits happen out-of-order?
my $date = $1;
my $channel = $ev->{'channel'};
my $ts = $ev->{'message'}{'ts'};
print STDERR "Matching message {$channel, $ts} to date $date\n";
- $dbh->do('INSERT INTO message_sheet_link (channel, ts, sheet_title) VALUES (?,?,?)', undef,
+ $dbh->do('INSERT INTO message_sheet_link (channel, ts, sheet_title) VALUES (?,?,?) ON CONFLICT (channel,ts) DO UPDATE SET sheet_title=EXCLUDED.sheet_title', undef,
$channel, $ts, $date);
+ # Blow the cache.
+ $dbh->do('UPDATE message_sheet_link SET tab_name=NULL, tab_id=NULL WHERE channel=?', undef, $channel);
} else {
print STDERR "No date found in message, ignoring\n";
}