有没有办法找到用户名的@提及名称(数字 xxxx_xxxxxx 或全名),反之亦然?
查看 msg.message 对象,有一个用户对象,其中包含消息来自的人的 id、jid 和姓名。我想找到那个人的@提及名称,以及他们在消息中@提及的任何人的用户名。
有没有办法找到用户名的@提及名称(数字 xxxx_xxxxxx 或全名),反之亦然?
查看 msg.message 对象,有一个用户对象,其中包含消息来自的人的 id、jid 和姓名。我想找到那个人的@提及名称,以及他们在消息中@提及的任何人的用户名。
我也想要这个。但由于它不在 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”字段添加到存储在大脑中的用户对象。因此,您所要做的就是遍历用户并找到具有匹配提及名称的用户