From cb66651b84b1897f08f2da9dc3e0d6b8e54cc18d Mon Sep 17 00:00:00 2001 From: shoopea Date: Sat, 14 Dec 2019 14:58:28 +0800 Subject: [PATCH] update g_stock trigger --- bot.go | 8 +++++++- job.go | 35 +++++++++++++++++++++++++---------- obj.go | 7 +++---- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/bot.go b/bot.go index f96d2fe..8a75300 100644 --- a/bot.go +++ b/bot.go @@ -639,7 +639,13 @@ func botListParsingRule(m *tb.Message) { } func botGStock(m *tb.Message) { - if !m.Private() { + if m.Private() { + clt, ok := getLockedClient(m.Chat.ID, false) + if !ok { + return + } + clt.Mux.Unlock() + } else if m.Chat.ID != cfg.Bot.Mainchat { return } diff --git a/job.go b/job.go index 6ed42ea..f101ba5 100644 --- a/job.go +++ b/job.go @@ -717,23 +717,38 @@ func jobGStock(j Job) { case 0: // send /g_stock_res p.Progress = 1 b, _ := json.Marshal(&p) - err = createJobCallback(objSubTypeJobGStock, j.UserID64, objSubTypeMessageGStockAnyAck, b, 1*time.Minute) - logOnError(err, "jobGStock : createJobCallback") + jobID64, err := createJob(objSubTypeJobGStock, objJobPriority, j.UserID64, 0, time.Unix(maxUnixTimestamp, 0).UTC(), b) + logOnError(err, "jobGStock : createJob") + setJobCallback(jobID64, j.UserID64, objSubTypeMessageGStockAnyAck) + setJobCallback(jobID64, j.UserID64, objSubTypeMessageBusy) + err = setJobTimeout(jobID64, 1*time.Minute) + logOnError(err, "jobGStock : setJobTimeout") clientSendCWMsg(cfg.Bot.Admin, "/g_stock_res") case 1: // send /g_stock_alch msg, err := getObjMsg(j.Trigger) logOnError(err, "jobGStock : getObjMsg msg") rule, err := getMsgParsingRule(msg) logOnError(err, "jobGStock : getMsgParsingRule") - cwm, err := parseSubTypeMessageGStockAnyAck(msg, rule.re) - for _, v := range cwm.Stock { - p.Stock = append(p.Stock, v) + if rule.MsgTypeID == objSubTypeMessageGStockAnyAck { + cwm, err := parseSubTypeMessageGStockAnyAck(msg, rule.re) + for _, v := range cwm.Stock { + p.Stock = append(p.Stock, v) + } + p.Progress = 2 + b, _ := json.Marshal(&p) + err = createJobCallback(objSubTypeJobGStock, j.UserID64, objSubTypeMessageGStockAnyAck, b, 1*time.Minute) + logOnError(err, "jobGStock : createJobCallback") + clientSendCWMsg(cfg.Bot.Admin, "/g_stock_alch") + } else if rule.MsgTypeID == objSubTypeMessageBusy { + m := TGCommand{ + Type: commandReplyMsg, + Text: "Busy, please retry later.", + FromMsgID64: p.MsgID64, + FromChatID64: p.ChatID64, + ParseMode: cmdParseModeHTML, + } + TGCmdQueue <- m } - p.Progress = 2 - b, _ := json.Marshal(&p) - err = createJobCallback(objSubTypeJobGStock, j.UserID64, objSubTypeMessageGStockAnyAck, b, 1*time.Minute) - logOnError(err, "jobGStock : createJobCallback") - clientSendCWMsg(cfg.Bot.Admin, "/g_stock_alch") case 2: // send /g_stock_misc msg, err := getObjMsg(j.Trigger) logOnError(err, "jobGStock : getObjMsg msg") diff --git a/obj.go b/obj.go index 1235b25..b32fa2f 100644 --- a/obj.go +++ b/obj.go @@ -724,10 +724,9 @@ func getSilentObjItemID(code string, name string) int64 { //log.Printf("Matching item code %s with %s.\n", code, obj.Code) return obj.ObjID64 } - if ok, _ := regexp.MatchString(`^a[0-9]+[a-e]$`, code); ok { - code2 := code[:len(code)-1] - log.Printf("Matching quality item code %s with %s.\n", code, code2) - if obj, ok := cacheObjItem[code2]; ok { + if ok, _ := regexp.MatchString(`^(a|w)[0-9]+[a-e]$`, code); ok { + // log.Printf("Matching quality item code %s with %s.\n", code, code[:len(code)-1]) + if obj, ok := cacheObjItem[code[:len(code)-1]]; ok { return obj.ObjID64 } }