package main import ( "fmt" "strings" "time" "github.com/line/line-bot-sdk-go/v7/linebot" "github.com/rs/zerolog/log" ) func Follow(event *linebot.Event) { // add user uid := event.Source.UserID usr := &User{ ID: uid, } Hit("加入", uid) row := DB.Exec("select id from users where id = ?", uid).RowsAffected if row == 0 { // 新用戶 if err := DB.Create(usr).Error; err != nil { log.Error().Err(err).Msg("Follow error.") return } log.Debug().Str("user", uid).Msg("New user.") } else { // 舊用戶 log.Debug().Str("user", uid).Msg("user unblocked.") } // Welcome and ask for msg := linebot.NewTextMessage("歡迎使用台新人壽智慧聊天服務! 請您協助核對您的身分。") template := linebot.NewCarouselTemplate( linebot.NewCarouselColumn( "https://imgs.gotrip.hk/wp-content/uploads/2017/08/brown-innocent_19545495235b69335e17060.jpg", "Profile A", "A 很帥 A 很棒", linebot.NewPostbackAction("選擇", "select=a", "我是A", ""), ), linebot.NewCarouselColumn( "https://imgs.gotrip.hk/wp-content/uploads/2017/08/brown-innocent_19545495235b69335e17060.jpg", "Profile B", "B 很帥 B 很棒", linebot.NewPostbackAction("選擇", "select=b", "我是B", ""), ), ) profiles := linebot.NewTemplateMessage("請使用手機讀取", template) if _, err := SendMessage(event.ReplyToken, uid, msg, profiles); err != nil { panic(err) } } func ApiSelectProfile(event *linebot.Event) { uid := event.Source.UserID data := event.Postback.Data data = strings.TrimPrefix(data, "select=") prof := &Profile{} if err := DB.First(prof, "name = ?", data).Error; err != nil { panic(err) } DB.Exec("update users set profile_id = ? where id = ?", prof.ID, uid) greet := linebot.NewTextMessage(fmt.Sprintf("歡迎回來! %v", data)) msg := linebot.NewStickerMessage("6325", "10979904") if _, err := SendMessage(event.ReplyToken, event.Source.UserID, greet, msg); err != nil { panic(err) } go func(uid string) { time.Sleep(time.Second * 10) if _, err := SendMessage("", uid, DefaultMsg()); err != nil { panic(err) } }(event.Source.UserID) }