MCPcopy
hub / github.com/danielgross/whatsapp-gpt / main

Function main

main.go:66–116  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

64}
65
66func main() {
67 dbLog := waLog.Stdout("Database", "DEBUG", true)
68 // Make sure you add appropriate DB connector imports, e.g. github.com/mattn/go-sqlite3 for SQLite
69 container, err := sqlstore.New("sqlite3", "file:examplestore.db?_foreign_keys=on", dbLog)
70 if err != nil {
71 panic(err)
72 }
73 // If you want multiple sessions, remember their JIDs and use .GetDevice(jid) or .GetAllDevices() instead.
74 deviceStore, err := container.GetFirstDevice()
75 if err != nil {
76 panic(err)
77 }
78 clientLog := waLog.Stdout("Client", "DEBUG", true)
79 client := whatsmeow.NewClient(deviceStore, clientLog)
80 // add the eventHandler
81 mycli := &MyClient{WAClient: client}
82 mycli.register()
83
84 if client.Store.ID == nil {
85 // No ID stored, new login
86 qrChan, _ := client.GetQRChannel(context.Background())
87 err = client.Connect()
88 if err != nil {
89 panic(err)
90 }
91 for evt := range qrChan {
92 if evt.Event == "code" {
93 // Render the QR code here
94 // e.g. qrterminal.GenerateHalfBlock(evt.Code, qrterminal.L, os.Stdout)
95 // or just manually `echo 2@... | qrencode -t ansiutf8` in a terminal
96 qrterminal.GenerateHalfBlock(evt.Code, qrterminal.L, os.Stdout)
97 // fmt.Println("QR code:", evt.Code)
98 } else {
99 fmt.Println("Login event:", evt.Event)
100 }
101 }
102 } else {
103 // Already logged in, just connect
104 err = client.Connect()
105 if err != nil {
106 panic(err)
107 }
108 }
109
110 // Listen to Ctrl+C (you can also do something else that prevents the program from exiting)
111 c := make(chan os.Signal)
112 signal.Notify(c, os.Interrupt, syscall.SIGTERM)
113 <-c
114
115 client.Disconnect()
116}

Callers

nothing calls this directly

Calls 1

registerMethod · 0.95

Tested by

no test coverage detected