feat(propulsion): Also handle propulsion
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			This commit is contained in:
		@@ -59,16 +59,24 @@ func checkPrice(alertChan chan api.Availability) {
 | 
			
		||||
 | 
			
		||||
	availabilities, err := apiClient.GetAvailabilities(context.Background(), &api.AvailabilityParams{
 | 
			
		||||
		Query: carFilter,
 | 
			
		||||
		Count: 1,
 | 
			
		||||
		Count: 100,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Warnf("Fail to contact API. Error: %s", err.Error())
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if availabilities.Results[0].Price < PriceAlert {
 | 
			
		||||
		log.Info("Launching an alert !")
 | 
			
		||||
		alertChan <- availabilities.Results[0]
 | 
			
		||||
		alert++
 | 
			
		||||
	for _, availability := range availabilities.Results {
 | 
			
		||||
		if availability.Price < 39000 && availability.Trim[0] == "SRRWD" {
 | 
			
		||||
			log.Info("Launching an alert !")
 | 
			
		||||
			alertChan <- availability
 | 
			
		||||
			alert++
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if availability.Price < 47000 && availability.Trim[0] == "LRAWD" {
 | 
			
		||||
			log.Info("Launching an alert !")
 | 
			
		||||
			alertChan <- availability
 | 
			
		||||
			alert++
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ var carFilter api.AvailabilityQueryParams = api.AvailabilityQueryParams{
 | 
			
		||||
	Model:     "my",
 | 
			
		||||
	Condition: "new",
 | 
			
		||||
	Options: api.OptionsParams{
 | 
			
		||||
		Trim: []string{"LRAWD"},
 | 
			
		||||
		Trim: []string{"SRRWD", "LRAWD"},
 | 
			
		||||
	},
 | 
			
		||||
	Arrangeby:   "Price",
 | 
			
		||||
	Order:       "asc",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								bot/bot.go
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								bot/bot.go
									
									
									
									
									
								
							@@ -56,14 +56,15 @@ func Init(alertChan chan api.Availability) {
 | 
			
		||||
 | 
			
		||||
func handleAlert(bot *tele.Bot, config *botConfig, alertChan chan api.Availability) {
 | 
			
		||||
	for availability := range alertChan {
 | 
			
		||||
		log.Warn("ALLERLRTEFDF")
 | 
			
		||||
 | 
			
		||||
		for _, chatId := range config.AlertChatIds {
 | 
			
		||||
			log.Infof("Sending alert to chat %d", chatId)
 | 
			
		||||
 | 
			
		||||
			_, err := bot.Send(
 | 
			
		||||
				tele.ChatID(chatId),
 | 
			
		||||
				fmt.Sprintf(
 | 
			
		||||
					"ALERT\\!\\! Found a Tesla Long Range in *%s* color is: *%d*€ [View](%s)",
 | 
			
		||||
					"ALERT\\!\\! Found a %s in *%s* color is: *%d*€ [View](%s)",
 | 
			
		||||
					availability.TrimName,
 | 
			
		||||
					strings.Join(availability.Paint, " and "),
 | 
			
		||||
					availability.Price,
 | 
			
		||||
					availability.GetOrderLink(),
 | 
			
		||||
@@ -147,19 +148,53 @@ func help(c tele.Context) error {
 | 
			
		||||
func price(c tele.Context) error {
 | 
			
		||||
	availabilities, err := apiClient.GetAvailabilities(context.Background(), &api.AvailabilityParams{
 | 
			
		||||
		Query: carFilter,
 | 
			
		||||
		Count: 1,
 | 
			
		||||
		Count: 100,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Warnf("Fail to retrieve availability from tesla website. Error: %s", err.Error())
 | 
			
		||||
		return c.Send("Fail to retrieve availability from tesla website :(")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var longRange api.Availability
 | 
			
		||||
	var propulsion api.Availability
 | 
			
		||||
	for _, availability := range availabilities.Results {
 | 
			
		||||
		if longRange.TrimName == "" && availability.Trim[0] == "LRAWD" {
 | 
			
		||||
			longRange = availability
 | 
			
		||||
		}
 | 
			
		||||
		if propulsion.TrimName == "" && availability.Trim[0] == "SRRWD" {
 | 
			
		||||
			propulsion = availability
 | 
			
		||||
		}
 | 
			
		||||
		if propulsion.TrimName != "" && longRange.TrimName != "" {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var msg string
 | 
			
		||||
	if propulsion.TrimName == "" {
 | 
			
		||||
		msg = "There is no Tesla Propulsion available\n"
 | 
			
		||||
	} else {
 | 
			
		||||
		msg = fmt.Sprintf("The lowest price currently found for a *%s* in *%s* color is: *%d*€ [View](%s)\n",
 | 
			
		||||
			propulsion.TrimName,
 | 
			
		||||
			strings.Join(propulsion.Paint, " and "),
 | 
			
		||||
			propulsion.Price,
 | 
			
		||||
			propulsion.GetOrderLink(),
 | 
			
		||||
		)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if longRange.TrimName == "" {
 | 
			
		||||
		msg = fmt.Sprintf("%sThere is no Tesla Long Range available", msg)
 | 
			
		||||
	} else {
 | 
			
		||||
		msg = fmt.Sprintf("%sThe lowest price currently found for a *%s* in *%s* color is: *%d*€ [View](%s)\n",
 | 
			
		||||
			msg,
 | 
			
		||||
			longRange.TrimName,
 | 
			
		||||
			strings.Join(longRange.Paint, " and "),
 | 
			
		||||
			longRange.Price,
 | 
			
		||||
			longRange.GetOrderLink(),
 | 
			
		||||
		)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return c.Reply(
 | 
			
		||||
		fmt.Sprintf("The lowest price currently found for a *Tesla Long Range* in *%s* color is: *%d*€ [View](%s)",
 | 
			
		||||
			strings.Join(availabilities.Results[0].Paint, " and "),
 | 
			
		||||
			availabilities.Results[0].Price,
 | 
			
		||||
			availabilities.Results[0].GetOrderLink(),
 | 
			
		||||
		), &homeMenu,
 | 
			
		||||
		msg, &homeMenu,
 | 
			
		||||
	)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -176,8 +211,9 @@ func list(c tele.Context) error {
 | 
			
		||||
	availabilitiesStr := fmt.Sprintf("Found *%s* cars\n", availabilities.TotalMatchesFound)
 | 
			
		||||
	for _, availability := range availabilities.Results {
 | 
			
		||||
		availabilitiesStr = fmt.Sprintf(
 | 
			
		||||
			"%sTesla Long Range, color *%s* available in *%s* for *%d*€ [View](%s)\n",
 | 
			
		||||
			"%s%s, color *%s* available in *%s* for *%d*€ [View](%s)\n",
 | 
			
		||||
			availabilitiesStr,
 | 
			
		||||
			availability.TrimName,
 | 
			
		||||
			strings.Join(availability.Paint, " and "),
 | 
			
		||||
			strings.ReplaceAll(availability.City, "-", "\\-"),
 | 
			
		||||
			availability.Price,
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ var carFilter api.AvailabilityQueryParams = api.AvailabilityQueryParams{
 | 
			
		||||
	Model:     "my",
 | 
			
		||||
	Condition: "new",
 | 
			
		||||
	Options: api.OptionsParams{
 | 
			
		||||
		Trim: []string{"LRAWD"},
 | 
			
		||||
		Trim: []string{"SRRWD", "LRAWD"},
 | 
			
		||||
	},
 | 
			
		||||
	Arrangeby:   "Price",
 | 
			
		||||
	Order:       "asc",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user