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:
parent
1a013939f5
commit
82f0e71ccc
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user