jarvis-bot
Version:
A JARVIS for your team - your most powerful bot and loyal butler.
84 lines (66 loc) • 2.55 kB
text/coffeescript
# Description:
# Username aliasing, set basis for userId method.
#
# Commands:
# hubot I am | I'm <alias> - Set your own alias
# hubot <username> is <alias> - Set alias for username
# hubot who is <alias> - See who's using the alias
# hubot clear alias for <username> - Remove all aliases for the user
#
# Author:
# kengz
_ = require 'lomath'
userId = require(__dirname+'/helper.coffee').userId
# set an alias for user
setAliasForUser = (robot, user, msg, alias) ->
name = userId(robot, user, msg)
robot.brain.data.aliases[name] ?= [name]
robot.brain.data.aliases[name] = _.union(robot.brain.data.aliases[name], [alias.toLowerCase()])
# clear alias
clearAliasForUser = (robot, user, msg) ->
name = userId(robot, user, msg)
robot.brain.data.aliases[name] = [name]
# list all aliases for the user
listAliasForUser = (robot, user, msg) ->
robot.brain.data.aliases[userId(robot, user, msg)].join(', ')
module.exports = (robot) ->
robot.brain.data.aliases ?= {}
robot.respond /I am(?! in| at) (.*)/i, (msg) ->
user = msg.message.user.name
alias = msg.match[1]
setAliasForUser robot, user, msg, alias
msg.send "Okay, I'll remember that "+user+" is "+alias
robot.respond /I\'*\’*m(?! in| at) (.*)/i, (msg) ->
user = msg.message.user.name
alias = msg.match[1]
setAliasForUser robot, user, msg, alias
msg.send "Okay, I'll remember that "+user+" is "+alias
robot.respond /My name is(?! in| at) (.*)/i, (msg) ->
user = msg.message.user.name
alias = msg.match[1]
setAliasForUser robot, user, msg, alias
msg.send "Okay, I'll remember that "+user+" is "+alias
# someone is alias
robot.respond /((?:(?!is)\w)*) is(?! in| at) (.*)/i, (msg) ->
user = userId(robot, msg.match[1])
if user?
alias = msg.match[2]
setAliasForUser robot, user, msg, alias
msg.send "Okay, I'll remember that "+user+" is "+alias
else
''
# see the alias set
robot.respond /who is (.*)/i, (msg) ->
name = msg.match[1].replace('?', '')
user = userId(robot, name, msg)
if user?
msg.send name+" is also "+listAliasForUser(robot, user, msg)
robot.respond /who am I/i, (msg) ->
name = msg.message.user.name
user = userId(robot, name, msg)
msg.send name+" is also "+listAliasForUser(robot, user, msg)
# clear all aliases for user
robot.respond /clear alias for (.*)/i, (msg) ->
user = userId(robot, msg.match[1], msg)
clearAliasForUser robot, user, msg
msg.send "Okay, aliases cleared for "+user