slack-irc icon indicating copy to clipboard operation
slack-irc copied to clipboard

Messages from external users in shared workspaces causes a crash

Open JaseFace opened this issue 7 years ago • 0 comments

Slack has added the ability to do shared workspaces, so channels can be bridged:

https://get.slack.help/hc/en-us/articles/115004152843

When messages come in from external users, the bridge currently crashes:

TypeError: Cannot read property 'name' of undefined

I added a quick conditional before user.name is accessed:

if (typeof user === 'undefined' || user === null) {
  _winston2.default.error('Received message from Slack without local user: ' + message.user + ' "' + message.text + '"');
  return;
}

I seems dataStore.getUserById() is failing to assign user, then accesses it without validation:

https://github.com/ekmartin/slack-irc/blob/e5cb8c6e83a18b706bd69cef96c5af067a31604a/lib/bot.js#L204-L205

The output the new conditional picked up is (sanitized, the first user is the remote one, the 2nd is a local user addressed in the message):

error: Received message from Slack without local user: U000XXXXX "<@UX0XXX0XX> - [..message snip..]"

Someone more knowledgable than I likely knows what to do in this case. Does dataStore.getUserById() need to be modified to understand remote instances, or do we simply print the message with the raw username?

JaseFace avatar Sep 24 '18 20:09 JaseFace