diff --git a/.travis.yml b/.travis.yml index ed2f1072..ae5fcd93 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,12 +10,25 @@ node_js: - "4" - "4.2" env: - - HUBOT_VERSION=">=2.0 <3" - - HUBOT_VERSION="^3.0" + - HUBOT_VERSION=">=2.0 <3" COFFEESCRIPT_VERSION=">=1.6.3 <2.0" + - HUBOT_VERSION="^3.0" COFFEESCRIPT_VERSION=">=1.6.3 <2.0" + - HUBOT_VERSION="^3.0" COFFEESCRIPT_VERSION="^2.0" +# Excluding tests with Coffeescript 2 on nodejs version <= 5 +# because the syntax incompatible issue. Coffeescript 2 use +# destructuring assignment syntax at https://git.io/fjcq2 but +# nodejs <= 5 doesn't support. +matrix: + exclude: + - node_js: "4.2" + env: HUBOT_VERSION="^3.0" COFFEESCRIPT_VERSION="^2.0" + - node_js: "4" + env: HUBOT_VERSION="^3.0" COFFEESCRIPT_VERSION="^2.0" + - node_js: "5" + env: HUBOT_VERSION="^3.0" COFFEESCRIPT_VERSION="^2.0" after_success: - npm run codecov # The second step here installs the specific hubot version determined # by the `env` specified in the matrix. That lets us test against # multiple Hubot versions. This is a bit messy, but works around # package.json only being able to specify one version. -script: npm install && npm install hubot@"$HUBOT_VERSION" && npm test +script: npm install && npm install hubot@"$HUBOT_VERSION" coffeescript@"$COFFEESCRIPT_VERSION" && npm test diff --git a/src/bot.coffee b/src/bot.coffee index 3198a91e..14a5d9ed 100644 --- a/src/bot.coffee +++ b/src/bot.coffee @@ -15,8 +15,9 @@ class SlackBot extends Adapter # @param {Object} options.rtm - RTM configuration options for SlackClient # @param {Object} options.rtmStart - options for `rtm.start` Web API method ### - constructor: (@robot, @options) -> - super + constructor: (robot, @options) -> + super robot + @robot = robot @robot.logger.info "hubot-slack adapter v#{pkg.version}" @client = new SlackClient @options, @robot @@ -296,9 +297,9 @@ class SlackBot extends Adapter @robot.logger.debug "Received presence update message for users: #{u.id for u in users} with status: #{event.presence}" @receive new PresenceMessage(users, event.presence) - + else if event.type is "file_shared" - + # Once again Hubot expects all user objects to have a room property that is used in the envelope for the message # after it is received. If the reaction is to a message, then the `event.item.channel` contain a conversation ID. # Otherwise reactions can be on files and file comments, which are "global" and aren't contained in a diff --git a/src/message.coffee b/src/message.coffee index 2dc02890..c277f55f 100644 --- a/src/message.coffee +++ b/src/message.coffee @@ -17,10 +17,11 @@ class ReactionMessage extends Message # custom integration (not part of a Slack app with a bot user), then this value will be undefined. # @param {string} event_ts - A String of the reaction event timestamp. ### - constructor: (@type, @user, @reaction, @item_user, @item, @event_ts) -> - super @user + constructor: (@type, user, @reaction, @item_user, @item, @event_ts) -> + super user + @user = user @type = @type.replace("reaction_", "") - + class FileSharedMessage extends Message ###* @@ -31,8 +32,9 @@ class FileSharedMessage extends Message # @param {string} file_id - A String identifying the file_id of the file that was shared. # @param {string} event_ts - A String of the file_shared event timestamp. ### - constructor: (@user, @file_id, @event_ts) -> - super @user + constructor: (user, @file_id, @event_ts) -> + super user + @user = user class PresenceMessage extends Message @@ -79,7 +81,12 @@ class SlackTextMessage extends TextMessage # @param {string} robot_name - The Slack username for this robot # @param {string} robot_alias - The alias for this robot ### - constructor: (@user, @text, rawText, @rawMessage, channel_id, robot_name, robot_alias) -> + constructor: (user, text, rawText, rawMessage, channel_id, robot_name, robot_alias) -> + super user, text, rawMessage.ts + + @user = user + @text = text + @rawMessage = rawMessage # private instance properties @_channel_id = channel_id @_robot_name = robot_name @@ -90,8 +97,6 @@ class SlackTextMessage extends TextMessage @thread_ts = @rawMessage.thread_ts if @rawMessage.thread_ts? @mentions = [] - super @user, @text, @rawMessage.ts - ###* # Build the text property, a flat string representation of the contents of this message. # @@ -262,4 +267,4 @@ class SlackTextMessage extends TextMessage exports.SlackTextMessage = SlackTextMessage exports.ReactionMessage = ReactionMessage exports.PresenceMessage = PresenceMessage -exports.FileSharedMessage = FileSharedMessage \ No newline at end of file +exports.FileSharedMessage = FileSharedMessage