Add: ability to write a date in the ON/OFF telegram command
Now we can do it like this: - ON (current date) - ON 7:30 (current day, custom hour) - ON 2024-11-27 7:30 (custom day, custom hour)
This commit is contained in:
parent
9978cd13ae
commit
286a2eea18
@ -18,6 +18,81 @@ func ProcesarMensaje(update tgbotapi.Update, db *gorm.DB) {
|
|||||||
command := strings.ToUpper(parts[0])
|
command := strings.ToUpper(parts[0])
|
||||||
var timestamp time.Time
|
var timestamp time.Time
|
||||||
|
|
||||||
|
if command != "ON" && command != "OFF" {
|
||||||
|
log.Println("Comando desconocido:", command)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
now := time.Now()
|
||||||
|
if len(parts) == 1 {
|
||||||
|
// Sin fecha ni hora -> usar timestamp actual
|
||||||
|
timestamp = now
|
||||||
|
} else {
|
||||||
|
// Intentar parsear fecha y hora
|
||||||
|
var parsedDate time.Time
|
||||||
|
var parsedTime time.Time
|
||||||
|
var err error
|
||||||
|
|
||||||
|
for i := 1; i < len(parts); i++ {
|
||||||
|
if parsedDate.IsZero() {
|
||||||
|
parsedDate, err = time.Parse("2006-01-02", parts[i])
|
||||||
|
if err == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if parsedTime.IsZero() {
|
||||||
|
parsedTime, err = time.Parse("15:04", parts[i])
|
||||||
|
if err == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !parsedDate.IsZero() && !parsedTime.IsZero() {
|
||||||
|
// Ambos fecha y hora proporcionados
|
||||||
|
timestamp = time.Date(
|
||||||
|
parsedDate.Year(), parsedDate.Month(), parsedDate.Day(),
|
||||||
|
parsedTime.Hour(), parsedTime.Minute(), 0, 0, now.Location(),
|
||||||
|
)
|
||||||
|
} else if !parsedDate.IsZero() {
|
||||||
|
// Solo fecha proporcionada -> usar las 00:00 como hora
|
||||||
|
timestamp = time.Date(
|
||||||
|
parsedDate.Year(), parsedDate.Month(), parsedDate.Day(),
|
||||||
|
0, 0, 0, 0, now.Location(),
|
||||||
|
)
|
||||||
|
} else if !parsedTime.IsZero() {
|
||||||
|
// Solo hora proporcionada -> usar fecha actual
|
||||||
|
timestamp = time.Date(
|
||||||
|
now.Year(), now.Month(), now.Day(),
|
||||||
|
parsedTime.Hour(), parsedTime.Minute(), 0, 0, now.Location(),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
log.Println("Formato de entrada inválido:", parts[1:])
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
event := HeatingEvent{
|
||||||
|
EventType: command,
|
||||||
|
Timestamp: timestamp,
|
||||||
|
}
|
||||||
|
if err := db.Create(&event).Error; err != nil {
|
||||||
|
log.Printf("Error al guardar el evento %s: %v", command, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("Evento %s registrado con éxito para el %s", command, timestamp.Format("2006-01-02 15:04"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func ProcesarMensaje2(update tgbotapi.Update, db *gorm.DB) {
|
||||||
|
if update.Message == nil || update.Message.Text == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
parts := strings.Fields(update.Message.Text)
|
||||||
|
command := strings.ToUpper(parts[0])
|
||||||
|
var timestamp time.Time
|
||||||
|
|
||||||
if len(parts) == 1 {
|
if len(parts) == 1 {
|
||||||
timestamp = update.Message.Time()
|
timestamp = update.Message.Time()
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user