modify line command multiple reply or push message

This commit is contained in:
Jay 2019-03-05 21:47:10 +08:00
parent afc0987d40
commit cc67ba4738
2 changed files with 65 additions and 29 deletions

View File

@ -104,9 +104,9 @@ func checkMessageObject(m interface{}) interface{} {
} }
// PushMessage - // PushMessage -
func PushMessage(target string, message interface{}) { func PushMessage(target string, message ...interface{}) {
log.Println("push target :::: ", target) log.Println("push target :::: ", target)
if len(target) == 0 { if len(target) == 0 || len(message) == 0 {
return return
} }
urlPath := "/v2/bot/message/push" urlPath := "/v2/bot/message/push"
@ -115,9 +115,19 @@ func PushMessage(target string, message interface{}) {
To: target, To: target,
} }
message = checkMessageObject(message) checked := make([]interface{}, 0)
for _, v := range message {
tmp := checkMessageObject(v)
if tmp == nil {
continue
}
checked = append(checked, tmp)
}
body.Messages = append(body.Messages, message) body.Messages = append(body.Messages, checked...)
if len(body.Messages) > 5 {
body.Messages = body.Messages[:5]
}
dataByte, err := json.Marshal(body) dataByte, err := json.Marshal(body)
if err != nil { if err != nil {
log.Println("to json error ::::", err) log.Println("to json error ::::", err)
@ -153,8 +163,8 @@ func PushMessage(target string, message interface{}) {
} }
// ReplyMessage - // ReplyMessage -
func ReplyMessage(replyToken string, message interface{}) { func ReplyMessage(replyToken string, message ...interface{}) {
if len(replyToken) == 0 { if len(replyToken) == 0 || len(message) == 0 {
return return
} }
urlPath := "/v2/bot/message/reply" urlPath := "/v2/bot/message/reply"
@ -163,9 +173,19 @@ func ReplyMessage(replyToken string, message interface{}) {
ReplyToken: replyToken, ReplyToken: replyToken,
} }
message = checkMessageObject(message) checked := make([]interface{}, 0)
for _, v := range message {
tmp := checkMessageObject(v)
if tmp == nil {
continue
}
checked = append(checked, tmp)
}
body.Messages = append(body.Messages, message) body.Messages = append(body.Messages, checked...)
if len(body.Messages) > 5 {
body.Messages = body.Messages[:5]
}
dataByte, err := json.Marshal(body) dataByte, err := json.Marshal(body)
if err != nil { if err != nil {
return return

View File

@ -51,9 +51,13 @@ func ParseLineMsg(txt, replyToken string, source *lineobj.SourceObject) {
return return
} }
str := runCMD(strings.Join(strs[1:], " "), c.Message, source) resStrs := runCMD(strings.Join(strs[1:], " "), c.Message, source)
m := parseResult(str) msgs := make([]interface{}, 0)
line.ReplyMessage(replyToken, m) for _, v := range resStrs {
m := parseResult(v)
msgs = append(msgs, m)
}
line.ReplyMessage(replyToken, msgs...)
} else { } else {
// key cmd // key cmd
@ -62,9 +66,13 @@ func ParseLineMsg(txt, replyToken string, source *lineobj.SourceObject) {
return return
} }
str := runCMD(strings.Join(strs[1:], " "), c.Message, source) resStrs := runCMD(strings.Join(strs[1:], " "), c.Message, source)
m := parseResult(str) msgs := make([]interface{}, 0)
line.ReplyMessage(replyToken, m) for _, v := range resStrs {
m := parseResult(v)
msgs = append(msgs, m)
}
line.ReplyMessage(replyToken, msgs...)
} }
} }
@ -95,23 +103,31 @@ func parseResult(str string) interface{} {
return m return m
} }
func runCMD(txt, c string, s *lineobj.SourceObject) (res string) { func runCMD(txt, c string, s *lineobj.SourceObject) (res []string) {
cmdAct := parseCMD(c) cmds := strings.Split(c, "$#$")
if len(cmdAct) == 0 { if len(cmds) == 0 {
return c return
} }
res = c for _, c := range cmds {
for _, v := range cmdAct { cmdAct := parseCMD(c)
if len(v) > 1 { if len(cmdAct) == 0 {
// run cmd res = append(res, c)
m := strings.Split(v[1], "=") continue
sub := ""
if len(m) > 1 {
sub = strings.Join(m[1:], " ")
}
cmdRes := selectAct(m[0], sub, txt, s)
res = strings.Replace(res, v[0], cmdRes, 1)
} }
tmpRes := c
for _, v := range cmdAct {
if len(v) > 1 {
// run cmd
m := strings.Split(v[1], "=")
sub := ""
if len(m) > 1 {
sub = strings.Join(m[1:], " ")
}
cmdRes := selectAct(m[0], sub, txt, s)
tmpRes = strings.Replace(tmpRes, v[0], cmdRes, 1)
}
}
res = append(res, tmpRes)
} }
return return
} }