Fix: bot recovery
This commit is contained in:
		| @@ -83,10 +83,10 @@ func saveFullInfo(fi *models.FullInfo) error { | ||||
|  | ||||
| func notifyBotIfNeeded(fi *models.FullInfo) { | ||||
| 	if botName := fi.Room.WhichBotToMove(); botName != "" { | ||||
| 		log.Debug("got botname", "name", botName) | ||||
| 		log.Debug("got botname", "name", botName, "channel_len", len(llmapi.SignalChanMap[botName])) | ||||
| 		llmapi.SignalChanMap[botName] <- true | ||||
| 		log.Debug("after sending signal", "name", botName) | ||||
| 	} | ||||
| 	log.Debug("no bot", "room_id", fi.Room.ID) | ||||
| } | ||||
|  | ||||
| // cache | ||||
| @@ -169,11 +169,22 @@ func getFullInfoByCtx(ctx context.Context) (*models.FullInfo, error) { | ||||
| 	return resp, nil | ||||
| } | ||||
|  | ||||
| func leaveRole(fi *models.FullInfo) { | ||||
| 	fi.Room.RedTeam.Guessers = utils.RemoveFromSlice(fi.State.Username, fi.Room.RedTeam.Guessers) | ||||
| 	fi.Room.BlueTeam.Guessers = utils.RemoveFromSlice(fi.State.Username, fi.Room.BlueTeam.Guessers) | ||||
| 	if fi.Room.RedTeam.Mime == fi.State.Username { | ||||
| 		fi.Room.RedTeam.Mime = "" | ||||
| 	} | ||||
| 	if fi.Room.BlueTeam.Mime == fi.State.Username { | ||||
| 		fi.Room.BlueTeam.Mime = "" | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func joinTeam(ctx context.Context, role, team string) (*models.FullInfo, error) { | ||||
| 	// get username | ||||
| 	fi, _ := getFullInfoByCtx(ctx) | ||||
| 	fi.Room.RedTeam.Guessers = utils.RemoveFromSlice(fi.State.Username, fi.Room.RedTeam.Guessers) | ||||
| 	fi.Room.BlueTeam.Guessers = utils.RemoveFromSlice(fi.State.Username, fi.Room.BlueTeam.Guessers) | ||||
| 	// leave gueesers if present | ||||
| 	leaveRole(fi) | ||||
| 	// get room | ||||
| 	if role == "mime" { | ||||
| 		if team == "blue" { | ||||
| @@ -186,9 +197,6 @@ func joinTeam(ctx context.Context, role, team string) (*models.FullInfo, error) | ||||
| 			fi.Room.BlueTeam.Color = "blue" | ||||
| 			fi.State.Team = "blue" | ||||
| 			fi.State.Role = "mime" | ||||
| 			if fi.Room.RedTeam.Mime == fi.State.Username { | ||||
| 				fi.Room.RedTeam.Mime = "" | ||||
| 			} | ||||
| 		} else if team == "red" { | ||||
| 			if fi.Room.RedTeam.Mime != "" { | ||||
| 				// error: alredy taken | ||||
| @@ -199,9 +207,6 @@ func joinTeam(ctx context.Context, role, team string) (*models.FullInfo, error) | ||||
| 			fi.Room.RedTeam.Color = "red" | ||||
| 			fi.State.Team = "red" | ||||
| 			fi.State.Role = "mime" | ||||
| 			if fi.Room.BlueTeam.Mime == fi.State.Username { | ||||
| 				fi.Room.BlueTeam.Mime = "" | ||||
| 			} | ||||
| 		} else { | ||||
| 			err := errors.New("uknown team:" + team) | ||||
| 			return nil, err | ||||
| @@ -306,7 +311,7 @@ func recoverBot(bm map[string]string) error { | ||||
| 		return fmt.Errorf("no such room: %s; err: %w", bm["room_id"], err) | ||||
| 	} | ||||
| 	log.Debug("recovering bot", "bot", bm) | ||||
| 	_, err := llmapi.NewBot(bm["role"], bm["team"], bm["bot_name"], bm["room_id"], cfg) | ||||
| 	_, err := llmapi.NewBot(bm["role"], bm["team"], bm["bot_name"], bm["room_id"], cfg, true) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder