add pre group one bot setting

This commit is contained in:
Jay
2019-06-25 17:02:03 +08:00
parent c605b2d9e9
commit 8c432b9b68
13 changed files with 185 additions and 56 deletions
+5 -3
View File
@@ -7,11 +7,13 @@ import (
)
// MessageEvent -
func MessageEvent(e *lineobj.EventObject) {
func MessageEvent(botid string, e *lineobj.EventObject) {
if len(botid) == 0 {
return
}
switch e.Type {
case "message":
messageType(e)
messageType(botid, e)
break
default:
fmt.Println("line webhook type not match")
+27 -17
View File
@@ -16,7 +16,7 @@ import (
msgcmd "git.trj.tw/golang/mtfosbot/module/message-command"
)
func messageType(e *lineobj.EventObject) {
func messageType(botid string, e *lineobj.EventObject) {
msg := e.Message
mtype, ok := msg["type"]
if !ok {
@@ -26,17 +26,17 @@ func messageType(e *lineobj.EventObject) {
if t, ok := mtype.(string); ok {
switch t {
case "text":
textMsg(e)
textMsg(botid, e)
break
case "image":
imageMsg(e)
imageMsg(botid, e)
break
}
}
return
}
func textMsg(e *lineobj.EventObject) {
func textMsg(botid string, e *lineobj.EventObject) {
msg := e.Message
mtxt, ok := msg["text"]
if !ok {
@@ -46,14 +46,14 @@ func textMsg(e *lineobj.EventObject) {
// group action
if e.Source.Type == "group" {
if txt, ok := mtxt.(string); ok {
msgcmd.ParseLineMsg(txt, e.ReplyToken, e.Source)
saveTextMsgToLog(txt, e.Source)
msgcmd.ParseLineMsg(botid, txt, e.ReplyToken, e.Source)
saveTextMsgToLog(botid, txt, e.Source)
}
}
return
}
func imageMsg(e *lineobj.EventObject) {
func imageMsg(botid string, e *lineobj.EventObject) {
msg := e.Message
imgID, ok := msg["id"]
if !ok {
@@ -62,19 +62,19 @@ func imageMsg(e *lineobj.EventObject) {
// group action
if e.Source.Type == "group" {
if id, ok := imgID.(string); ok {
saveImageMsgToLog(id, e.Source)
saveImageMsgToLog(botid, id, e.Source)
}
}
}
func getSourceUser(uid, gid string) (u *model.LineUser, err error) {
func getSourceUser(accessToken, uid, gid string) (u *model.LineUser, err error) {
userData, err := model.GetLineUserByID(uid)
if err != nil {
return
}
if userData == nil {
tmpu, err := line.GetUserInfo(uid, gid)
tmpu, err := line.GetUserInfo(accessToken, uid, gid)
if err != nil || tmpu == nil {
return nil, err
}
@@ -87,7 +87,7 @@ func getSourceUser(uid, gid string) (u *model.LineUser, err error) {
}
} else {
if userData.Mtime.Unix() < (time.Now().Unix() - 86400) {
tmpu, err := line.GetUserInfo(uid, gid)
tmpu, err := line.GetUserInfo(accessToken, uid, gid)
if err != nil || tmpu == nil {
return nil, err
}
@@ -102,8 +102,13 @@ func getSourceUser(uid, gid string) (u *model.LineUser, err error) {
return userData, nil
}
func saveTextMsgToLog(txt string, s *lineobj.SourceObject) {
u, err := getSourceUser(s.UserID, s.GroupID)
func saveTextMsgToLog(botid, txt string, s *lineobj.SourceObject) {
bot, err := model.GetBotInfo(botid)
if err != nil || bot == nil {
fmt.Println("get bot info fail :: ", err)
return
}
u, err := getSourceUser(bot.AccessToken, s.UserID, s.GroupID)
if err != nil || u == nil {
return
}
@@ -112,13 +117,18 @@ func saveTextMsgToLog(txt string, s *lineobj.SourceObject) {
model.AddLineMessageLog(s.GroupID, s.UserID, txt, "text")
}
func saveImageMsgToLog(id string, s *lineobj.SourceObject) {
u, err := getSourceUser(s.UserID, s.GroupID)
func saveImageMsgToLog(botid, id string, s *lineobj.SourceObject) {
bot, err := model.GetBotInfo(botid)
if err != nil || bot == nil {
fmt.Println("get bot info fail :: ", err)
return
}
u, err := getSourceUser(bot.AccessToken, s.UserID, s.GroupID)
if err != nil || u == nil {
return
}
mime, err := line.GetContentHead(id)
mime, err := line.GetContentHead(bot.AccessToken, id)
if err != nil || len(mime) == 0 {
return
}
@@ -150,7 +160,7 @@ func saveImageMsgToLog(id string, s *lineobj.SourceObject) {
}
defer w.Close()
err = line.DownloadContent(id, w)
err = line.DownloadContent(bot.AccessToken, id, w)
if err != nil {
return
}