   msg = msg.substr(0, mbMeta.maxFactoidSize).trim().replace(/\0/g, '').replace(/\n/g, ' ')
 
   reply = (text) -> bot.reply {channel: channel}, {text: text}
+
+  parseAndReply = (value) ->
+    value = oneOf(value.split(/\s+or\s+/i)).trim()
+
+    isReply = (/^<reply>\s*/i).test(value)
+    value = value.replace(/^<reply>\s*/i, '') if isReply
+
+    isEmote = (/^\/me\s+/i).test(value)
+    value = value.replace(/^\/me\s+/i, '') if isEmote
+
+    value = value.replace(/\$who/ig, sender)
+
+    if isReply
+      reply value
+    else if isEmote
+      bot.api.callAPI 'chat.meMessage', {channel: channel, text: value}, (err, res) ->
+        log.error(err) if err
+    else
+      reply "#{key} is #{value}"
 
   update = (key, value) ->
     # TODO: Use plan limits

      if not current?
        reply oneOf "I don't know what that is.", "I have no idea.", "No idea.", "I don't know."
        return
      reply parse sender, current
    return

  # Updating factoids {{{2

  # Getting regular factoids, last chance {{{3
  else
    getFactoid team, msg, (err, value) ->
      if value?
        parseAndReply value
    return

  return
