diff --git a/package.json b/package.json index 547edb6..cffd144 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hubot-matrix", - "version": "1.1.0", + "version": "1.1.1", "description": "Matrix adapter for hubot", "main": "src/matrix.coffee", "scripts": { @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "parent-require": "^1.0.0", - "matrix-js-sdk": ">=0.3.0" + "matrix-js-sdk": "^0.6.0" }, "peerDependencies": { "hubot": ">=2.0" diff --git a/src/matrix.coffee b/src/matrix.coffee index bf29d46..8060c43 100644 --- a/src/matrix.coffee +++ b/src/matrix.coffee @@ -18,12 +18,28 @@ class Matrix extends Adapter if /^(f|ht)tps?:\/\//i.test(str) @sendImage envelope, str else - @client.sendTextMessage envelope.room, str + @client.sendMessage envelope.room, { + msgtype: "m.notice", + body: str + } + + emote: (envelope, strings...) -> + for str in strings + @client.sendMessage envelope.room, { + msgtype: "m.emote", + body: str + } reply: (envelope, strings...) -> for str in strings @send envelope, "#{envelope.user.name}: #{str}" + topic: (envelope, strings...) -> + for str in strings + @client.sendEvent envelope.room, "m.room.topic", { + topic: str + } + sendImage: (envelope, url) -> @client.uploadContent(stream: request url, name: url).done (murl) => @client.sendMessage envelope.room, { @@ -49,11 +65,14 @@ class Matrix extends Adapter baseUrl: process.env.HUBOT_MATRIX_HOST_SERVER || 'https://matrix.org' accessToken: @access_token userId: @user_id - @client.on 'syncComplete', => - @robot.logger.info "Synced #{@client.getRooms().length} rooms" - @emit 'connected' + @client.on 'sync', (state, prevState, data) => + switch state + when "PREPARED" + @robot.logger.info "Synced #{@client.getRooms().length} rooms" + @emit 'connected' @client.on 'Room.timeline', (event, room, toStartOfTimeline) => - if event.getType() == 'm.room.message' and toStartOfTimeline == false + @client.sendReadReceipt(event) + if event.getType() == 'm.room.message' and event.getContent().msgtype != "m.notice" and toStartOfTimeline == false message = event.getContent().body name = event.getSender() user = @robot.brain.userForId name