update for shops

This commit is contained in:
shoopea 2020-02-06 10:23:50 +08:00
parent 3de816f2c8
commit 7995fa3e01
7 changed files with 74 additions and 10 deletions

26
bot.go
View File

@ -420,11 +420,29 @@ func botMsgRescanAll(m *tb.Message) {
TGCmdQueue <- c
return
}
p := JobPayloadRescanMsg{
Query: fmt.Sprintf("SELECT o.id FROM obj o WHERE o.obj_type_id = %d AND o.obj_sub_type_id = %d ORDER BY id ASC;", cacheObjType[`msg`], cacheObjSubType[`msg`]),
MsgID64: int64(m.ID),
ChatID64: m.Chat.ID,
var p JobPayloadRescanMsg
if len(m.Payload) > 0 {
r := regexp.MustCompile("^\"(?P<Filter>(.*))\"$")
if r.MatchString(m.Payload) {
p.Query = fmt.Sprintf("SELECT o.id FROM obj o, obj_msg om WHERE o.obj_type_id = %d AND o.obj_sub_type_id = %d AND om.obj_id = o.id AND om.text like '%s' ORDER BY o.id ASC;", cacheObjType[`msg`], cacheObjSubType[`msg`], r.ReplaceAllString(m.Text, "${Filter}"))
} else {
c := TGCommand{
Type: commandReplyMsg,
Text: "Wrong format",
FromMsgID64: int64(m.ID),
FromChatID64: m.Chat.ID,
}
TGCmdQueue <- c
return
}
} else {
p.Query = fmt.Sprintf("SELECT o.id FROM obj o WHERE o.obj_type_id = %d AND o.obj_sub_type_id = %d ORDER BY o.id ASC;", cacheObjType[`msg`], cacheObjSubType[`msg`])
}
p.MsgID64 = int64(m.ID)
p.ChatID64 = m.Chat.ID
b, _ := json.Marshal(p)
_, err := createJob(cacheObjSubType[`job_rescan_msg`], objJobPriorityRescanAllMsg, int64(m.Sender.ID), 0, time.Now().UTC(), b)
logOnError(err, "botMsgRescan : createJob(cacheObjSubType[`job_rescan_msg`])")

View File

@ -24,6 +24,16 @@
"name": "Guild deposit chat",
"obj_type": "msg"
},
{
"intl_id": "msg_shop_main_req",
"name": "Shop main request",
"obj_type": "msg"
},
{
"intl_id": "msg_shop_main_ack",
"name": "Shop main ack",
"obj_type": "msg"
},
{
"intl_id": "msg_job_gwithdraw_req",
"name": "Guild withdraw conf req",

View File

@ -31,7 +31,7 @@
"max_qty": 10000
}
],
"shops": [ {"type": "armor", "link": "/ws_abcd"},
{"type": "off_hand", "link": "/ws_0123"} ]
"shops": [ "/ws_abcd",
"/ws_0123" ]
}
}

View File

@ -1878,5 +1878,21 @@
"msg_type": "msg_tributes_stats_ack",
"chat_id": 0,
"user_id": 0
},
{
"prio": 5000,
"descn": "Shop main req",
"rule": "^/ws_(?P<Link>[a-zA-Z0-9]+)$",
"msg_type": "msg_shop_main_req",
"chat_id": 0,
"user_id": 0
},
{
"prio": 5000,
"descn": "Shop main ack",
"rule": "^Welcome, to the (?P<Name>[a-zA-Z0-9 ]+) #(?P<Number>[0-9]+)\\.\\n(?s:.*)$",
"msg_type": "msg_shop_main_ack",
"chat_id": 0,
"user_id": 0
}
]

11
def.go
View File

@ -45,10 +45,7 @@ type Config struct {
Min int64 `json:"min_qty"`
Max int64 `json:"max_qty"`
} `json:"vault_limit"`
Shops []struct {
Type string `json:"type"`
Link string `json:"link"`
} `json:"shops"`
Shops []string `json:"shops"`
} `json:"bot"`
}
@ -370,6 +367,12 @@ type ChatWarsMessageTributesStatsAck struct {
Tributes []ChatWarsTribute `json:"tributes"`
}
type ChatWarsMessageShopMainAck struct {
Msg *ChatWarsMessage `json:"msg"`
Name string `json:"name"`
Number string `json:"number"`
}
type MessageParsingRule struct {
ID int32
Priority int32 `json:"prio"`

13
msg.go
View File

@ -298,6 +298,19 @@ func parseSubTypeMessageTributesStatsAck(m *ChatWarsMessage, r *regexp.Regexp) (
return &cwm, nil
}
func parseSubTypeMessageShopMainAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWarsMessageShopMainAck, error) {
cwm := ChatWarsMessageShopMainAck{}
cwm.Msg = m
cwm.Name = r.ReplaceAllString(m.Text, "${Name}")
cwm.Number = r.ReplaceAllString(m.Text, "${Number}")
log.Printf("parseSubTypeMessageShopMainAck : Name : %s\n", cwm.Name)
log.Printf("parseSubTypeMessageShopMainAck : Number : %s\n", cwm.Number)
return &cwm, nil
}
func parseSubTypeMessageMeAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWarsMessageMeAck, error) {
var i int64

View File

@ -523,6 +523,10 @@ func SQLIdentifyMsgWorker(id int, objIds <-chan int64) {
logOnError(err, "SQLIdentifyMsgWorker["+strconv.Itoa(id)+"] : Parsing cacheObjSubType[`msg_tributes_stats_ack`]")
err = insertMsgTributesStats(cwm)
logOnError(err, "SQLIdentifyMsgWorker["+strconv.Itoa(id)+"] : insertMsgTributesStats")
case cacheObjSubType[`msg_shop_main_req`]:
case cacheObjSubType[`msg_shop_main_ack`]:
_, err := parseSubTypeMessageShopMainAck(m, rule.re)
logOnError(err, "SQLIdentifyMsgWorker["+strconv.Itoa(id)+"] : Parsing cacheObjSubType[`msg_shop_main_ack`]")
default:
//log.Printf("SQLIdentifyMsgWorker["+strconv.Itoa(id)+"] : Unknwon message type in rule %d : %d (%d)\n%s\n", msgParsingRules[i].ID, msgParsingRules[i].MsgTypeID64, objId, m.Text)
}