slackapi / hubot-slack

Slack Developer Kit for Hubot
https://slack.dev/hubot-slack/
MIT License
2.3k stars 635 forks source link

Match on raw text instead of formatted text on incoming messages #241

Open technicalpickles opened 9 years ago

technicalpickles commented 9 years ago

This was originally filed at https://github.com/github/hubot/issues/1053 but I believe this to be an adapter specific problem. From @callumacrae:

We have a script which starts like this:

robot.hear /some sentence here/i, (msg) ->

However, it doesn't hear it if the words are formatted at all, e.g. "some sentence here".

Would it be possible / desired to remove formatting from messages before parsing them?

I suggested this:

Slack already has a place it strips formatting for links. That'd be a good place to do it for other things: https://github.com/slackhq/hubot-slack/blob/master/src/slack.coffee#L153-L192

I think it is going to be up to the adapters to strip formatting like this. They probably should preserve the raw message in case an adapter-specific script wants to do something about, like hubot-slack does here: https://github.com/slackhq/hubot-slack/blob/master/src/slack.coffee#L112-L120

DEGoodmanWilson commented 8 years ago

This is a tough call. We could probably add this functionality enabled by an optional flag, to maintain the current behavior.

aoberoi commented 7 years ago

if someone would like to propose an API for optionally matching on an "unformatted" version of the message text, we are open to that. at the moment, we don't have any plans to implement this.

aoberoi commented 6 years ago

since 4.4.0, rawMessage is available on each message. so if your script listens for all messages, you can inspect that property and do your own matching against it. here's the idea in some code (i haven't actually run this):

robot.listen((message) => {
  if (message.rawText) {
    return \some sentence here\.exec(message.rawText);
  }
  return false;
}, (response) => {
  response.reply('matched raw text!');
});