Mercurial > hg > Members > anatofuz > logroulette
view run.go @ 1:4fb2b1cac732
bug fix
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 27 May 2020 10:31:13 +0900 |
parents | 02ea3a34fe2c |
children | a92a8de9d190 |
line wrap: on
line source
package logroulette import ( "fmt" "math/rand" "os" "strings" "time" "github.com/int128/slack" ) var iconURL string = "https://upload.wikimedia.org/wikipedia/commons/a/a4/13-02-27-spielbank-wiesbaden-by-RalfR-093.jpg" var botName string = "ログルーレット" var webhook string = os.Getenv("MATTERMOST_WEBHOOK") func Run(jsonp string) int { users, err := convertFromJSonToUserInfo(jsonp) if err != nil { fmt.Println(err) return 1 } targetUser, newUsers, err := perform(users) if err != nil { fmt.Println(err) return 1 } err = converUserInfoToJSON(newUsers, jsonp) if err != nil { fmt.Println(err) return 1 } var strBuilder strings.Builder strBuilder.WriteString("今日の議事録担当は ") strBuilder.WriteString(targetUser) strBuilder.WriteString("さんです!! オナシャス!!") slack.Send(webhook, &slack.Message{ Username: botName, Text: strBuilder.String(), IconURL: iconURL, }) return 0 } func perform(users []UserInfo) (string, []UserInfo, error) { var entryUsers []UserInfo for _, user := range users { if user.Done { continue } entryUsers = append(entryUsers, user) } if len(entryUsers) == 0 { entryUsers = users for _, user := range entryUsers { user.Done = false } } targetUser, newUsers := loulette(entryUsers) return targetUser.Id, newUsers, nil } func loulette(users []UserInfo) (UserInfo, []UserInfo) { rand.Seed(time.Now().UnixNano()) index := rand.Intn(len(users)) users[index].Done = true for _, user := range users { fmt.Println(user) } return users[index], users }