+ UserStatus := make(map[string]string)
+ if *userStatusFifo != "" {
+ statuses, resp, err := c.GetUsersStatusesByIds(userIds)
+ if err != nil {
+ if DebugFd != nil {
+ spew.Fdump(DebugFd, resp)
+ }
+ log.Fatalln(err)
+ }
+ if DebugFd != nil {
+ spew.Fdump(DebugFd, teams)
+ }
+ userIds = nil
+ for _, s := range statuses {
+ UserStatus[Users[s.UserId].Username] = s.Status
+ }
+ statuses = nil
+ go func() {
+ for {
+ time.Sleep(mmc.SleepTime)
+ fd, err := os.OpenFile(
+ *userStatusFifo, os.O_WRONLY|os.O_APPEND, os.FileMode(0666),
+ )
+ if err != nil {
+ log.Println("OpenFile:", *userStatusFifo, err)
+ continue
+ }
+ var onlines []string
+ var aways []string
+ for name, status := range UserStatus {
+ switch status {
+ case "online":
+ onlines = append(onlines, name)
+ case "away":
+ aways = append(aways, name)
+ }
+ }
+ sort.Strings(onlines)
+ sort.Strings(aways)
+ fmt.Fprintln(fd, "O:", strings.Join(onlines, " "))
+ fmt.Fprintln(fd, "A:", strings.Join(aways, " "))
+ fd.Close()
+ }
+ }()
+ }
+