This repository has been archived by the owner. It is now read-only.
Fetching contributors…
Cannot retrieve contributors at this time
75 lines (57 sloc) 2.54 KB
# Decides where you should go.
# These commands are grabbed from comment blocks at the top of each file.
# remember <location> as a <group> location - Remembers the location for the group.
# forget <location> as a <group> location - Forgets the location from the group.
# forget all locations for <group> - Forgets all the locations for the group.
# where can we go for <group>? - Returns a list of places that exist for the group.
# where should we go for <group>? - Returns a randomly selected location for the group.
class Locations
constructor: (@robot) -> = {}
add: (groupname, name) ->
if[groupname] is undefined[groupname] = []
for location in[groupname]
if location.toLowerCase() is name.toLowerCase()
return[groupname].push name
remove: (groupname, name) ->
group =[groupname] or [][groupname] = (location for location in group when location.toLowerCase() isnt name.toLowerCase())
removeAll: (groupname) ->
group: (name) ->
return[name] or []
module.exports = (robot) ->
locations = new Locations robot
robot.respond /remember (.*) as a (.*) location/i, (msg) ->
locationname = msg.match[1]
locationgroup = msg.match[2]
locations.add locationgroup, locationname
if locationname.toLowerCase() is "nandos"
msg.send "Nom peri peri. My fav."
robot.respond /forget (.*) as a (.*) location/i, (msg) ->
locationname = msg.match[1]
locationgroup = msg.match[2]
locations.remove locationgroup, locationname
robot.respond /forget all locations for (.*)/i, (msg) ->
locationgroup = msg.match[1]
locations.removeAll locationgroup
robot.respond /where can we go for (.*)\?$/i, (msg) ->
locationgroup = msg.match[1]
grouplocations =
if grouplocations.length > 0
for location in grouplocations
msg.send location
msg.send "I don't know anywhere to go for #{locationgroup}"
robot.respond /where (should|shall) we go for (.*)\?$/i, (msg) ->
locationgroup = msg.match[2]
grouplocations =
if grouplocations.length is 0
msg.send "I dont know anywhere to go for #{locationgroup}"
location = msg.random grouplocations
msg.send "I think you should goto #{location}"