code: func buildOffensiveMap() (map[string]struct{}, error) {
  	o := map[string]struct{}{}
  	p := filepath.Join("data", "offensive.txt")
  	fi, err := os.Open(p)
  	if err != nil {
  		return o, err
  	}
  	scanner := bufio.NewScanner(fi)
  	scanner.Split(bufio.ScanLines)
  	for scanner.Scan() {
  		o[scanner.Text()] = struct{}{}
  	}
  	err = fi.Close()
  	return o, err
  }
docs: // buildOffensiveMap creates a map of offensive terms for which Abot will refuse
  // to respond. This helps ensure that users are somewhat respectful to Abot and
  // her human trainers, since sentences caught by the OffensiveMap are rejected
  // before any human ever sees them.