有没有办法找到用户名的@mention名称(数字xxxx_xxxxxx或全名),反之亦然?
查看msg.message对象,有一个用户对象,其中包含消息来自的人员的id,jid和名称.我想找到那个人的@mention名字,也可能是他们在邮件中提到的任何人的用户名.
我也想要这个。但由于它不在 xmpp 消息中,hubot 不会知道它。我认为您需要添加一个命令,将提及名称设置为用户的属性。就像是:
robot.respond /mentionname is @?(.+)$/i, (msg) ->
mentionname = msg.match[2]
user = robot.brain.userForId(msg.envelope.user.id)
user.mentionname = mentionname
Run Code Online (Sandbox Code Playgroud)
然后您可以在其他自定义命令中查找它。您向大脑 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
Run Code Online (Sandbox Code Playgroud)
或者,您可以修改 userForName 以检查 userName 或提及名称字段,但这可能会破坏其他内容。无论哪种方式,您都需要您的用户告诉 hubot 他们的提及名称是什么...或者 hubot-hipchat 适配器可能会查找它(如果它有该信息)...我会看看。
- 编辑 -
忽略所有这些:D hipchat 适配器将“mention_name”字段添加到存储在大脑中的用户对象中。因此,您所要做的就是循环用户并找到具有匹配提及名称的用户