在HipChat上的Hubot中匹配用户名和@mention名称

时间:2012-10-26 19:13:24

标签: hubot

有没有办法找到用户名的@mention名称(数字xxxx_xxxxxx或全名),反之亦然?

查看msg.message对象,有一个用户对象,其中包含消息来自的人员的id,jid和名称。我想找到那个人的@mention名字,也可能是他们在邮件中提到的任何人的用户名。

1 个答案:

答案 0 :(得分:3)

我也想要这个。但由于它不在xmpp上,因此hubot不会知道它。我想你需要添加一个命令,将提名名称设置为用户的属性。类似的东西:

robot.respond /mentionname is @?(.+)$/i, (msg) ->
  mentionname = msg.match[2]

  user = robot.brain.userForId(msg.envelope.user.id)
  user.mentionname = mentionname

然后,您可以在其他自定义命令中查找它。您向大脑userForMentionName添加另一个方法,该方法与userForName非常相似。在你的脚本init中将它添加到大脑中。

userForMentionName = (name) ->
  result = null
  lowerName = name.toLowerCase()

  for k of (robot.brain.data.users or { })
    mentionName = robot.brain.data.users[k]['mention_name']      
    if mentionName? and mentionName.toLowerCase() is lowerName
      result = robot.brain.data.users[k]
  result

或者,您可以修改userForName以检查userName或提及名称字段,但这可能会破坏其他内容。无论哪种方式,你都需要你的用户告诉hubot他们的名字是什么......或者hubot-hipchat适配器可能会查找它,如果它有这些信息...我会看看。

- 编辑 -

忽略所有这些:D hipchat适配器将“remin_name”字段添加到存储在大脑中的用户对象。因此,您所要做的就是遍历用户并找到具有匹配提及名称的用户