67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"github.com/robfig/cron"
|
|
"go.mau.fi/whatsmeow"
|
|
"go.mau.fi/whatsmeow/store/sqlstore"
|
|
"go.mau.fi/whatsmeow/types"
|
|
waLog "go.mau.fi/whatsmeow/util/log"
|
|
|
|
waautoresponder "git.sangeeth.dev/wa-autoresponder"
|
|
"git.sangeeth.dev/wa-autoresponder/internal"
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
)
|
|
|
|
func main() {
|
|
fmt.Println("Auto responder message body:")
|
|
fmt.Println(waautoresponder.AutoResponderMessage)
|
|
|
|
dbLog := waLog.Stdout("Database", "DEBUG", true)
|
|
container, err := sqlstore.New("sqlite3", "file:whatsapp.db?_foreign_keys=on", dbLog)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// If you want multiple sessions, remember their JIDs and use .GetDevice(jid) or .GetAllDevices() instead.
|
|
deviceStore, err := container.GetFirstDevice()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
clientLog := waLog.Stdout("Client", "DEBUG", true)
|
|
waClient := whatsmeow.NewClient(deviceStore, clientLog)
|
|
waClient.SendPresence(types.PresenceAvailable)
|
|
|
|
client := internal.NewClient(waClient)
|
|
client.Register()
|
|
client.Connect()
|
|
|
|
deyeUser := os.Getenv("DEYE_USER")
|
|
deyePassword := os.Getenv("DEYE_PASSWORD")
|
|
|
|
if deyeUser == "" || deyePassword == "" {
|
|
panic("Deye user/password must be provided")
|
|
}
|
|
|
|
solar := internal.NewSolar(client, deyeUser, deyePassword)
|
|
|
|
myCron := cron.New()
|
|
myCron.AddFunc("0 5 19 * * *", solar.CronSendDailyReport)
|
|
myCron.AddFunc("0 */15 5-19 * * *", solar.CronCollectMetrics)
|
|
myCron.Start()
|
|
|
|
// Listen to Ctrl+C (you can also do something else that prevents the program from exiting)
|
|
c := make(chan os.Signal, 1)
|
|
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
|
<-c
|
|
|
|
myCron.Stop()
|
|
client.Disconnect()
|
|
}
|