anchor.diff:  do_1(#{<<"attachments">> := [#{<<"pretext">> := PreText}]} = In) ->
       do_1(In#{<<"text">> => PreText, <<"attachments">> => nil});
   do_1(#{<<"type">> := <<"message">>, <<"text">> := Text, <<"channel">> := Channel}) ->
  -    match_and_run(Text,
  -                  [
  -                   {<<"https?://[^\s]*(pull|issue)/[0-9]*">>,         {?MODULE, task_github_url, ['$$']}},
  -                   {{mention, <<"list(.*)">>},                        {?MODULE, task_list,       ['$1', Channel]}},
  -                   {{mention, <<"register\s+([^\s]*)\s+([^\s]*)">>},  {?MODULE, task_register,   ['$1', '$2', Channel]}},
  -                   {{mention, <<"user\s+([^\s]*)">>},                 {?MODULE, task_user,       ['$1', Channel]}},
  -                   {{mention, <<"help">>},                            {?MODULE, task_help,       [Channel]}}
  -                  ]);
  +    _ = match_and_run(Text,
  +                      [
  +                       {<<"https?://[^\s]*(pull|issue)/[0-9]*">>,         {?MODULE, task_github_url, ['$$']}},
  +                       {{mention, <<"list(.*)">>},                        {?MODULE, task_list,       ['$1', Channel]}},
  +                       {{mention, <<"register\s+([^\s]*)\s+([^\s]*)">>},  {?MODULE, task_register,   ['$1', '$2', Channel]}},
  +                       {{mention, <<"user\s+([^\s]*)">>},                 {?MODULE, task_user,       ['$1', Channel]}},
  +                       {{mention, <<"help">>},                            {?MODULE, task_help,       [Channel]}},
  +                       {{mention, <<"^.*">>},                             {?MODULE, task_help,       [Channel]}}
  +                      ]),
  +    ok;
   do_1(#{<<"type">> := <<"presence_change">>, <<"presence">> := <<"active">>, <<"user">> := SlackId}) ->
       _ = preminder_user:slack_id_to_mail(SlackId),
       ok;
  
positive.code:     ok.
  
  match_and_run(_, []) ->
      ok;
  match_and_run(Text, [{{mention, Pattern}, {M, F, Args}} | Rest]) ->
      SlackId = preminder_slack:slack_id(),
      case matches(Text, <<"<@", SlackId/binary, "(\|[^>]*)?>">>) of
          []            -> match_and_run(Text, Rest);
          [[Mention|_] | _] ->
              ok = match_and_run(binary:replace(Text, Mention, <<>>, [global]), [{Pattern, {M, F, Args}}]),
              match_and_run(Text, Rest)
      end;
  match_and_run(Text, [{Pattern, {M, F, Args0}} | Rest]) ->
      Matches = matches(Text, Pattern),
  
negative.code:                       error_logger:error_msg("~p~n~p~n", [Reason, erlang:get_stacktrace()])
                end
        end, Matches),
      ?IIF(Matches =:= [], match_and_run(Text, Rest), match).
  
  -spec matches(binary(), binary()) -> [[binary()]].
  matches(Text, Pattern) ->
  