5

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

查看 msg.message 对象,有一个用户对象,其中包含消息来自的人的 id、jid 和姓名。我想找到那个人的@提及名称,以及他们在消息中@提及的任何人的用户名。

4

1 回答 1

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 大致相同。在你的脚本初始化中将它添加到大脑中。

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他们的mentionname是什么......或者如果hubot-hipchat适配器有这些信息,它可能会查找它......我会看看。

- 编辑 -

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

于 2013-07-15T03:51:39.673 回答