package main import ( "encoding/json" "log" "regexp" "strconv" ) func resetMsgParsingRules2() error { var rules, rules2 []MessageParsingRule b, err := Asset("data/msg_rules.json") logOnError(err, "resetMsgParsingRules2 : load data/msg_rules.json") if err != nil { return err } err = json.Unmarshal(b, &rules) for _, r := range rules { r2 := MessageParsingRule{ Priority: r.Priority, Description: r.Description, Rule: r.Rule, MsgType: r.MsgType, } r2.MsgTypeID64, err = codeObjSubTypeId(r2.MsgType) logOnError(err, "resetMsgParsingRules2 : codeObjSubTypeId("+r2.MsgType+")") if err != nil { return err } r2.re, err = regexp.Compile(r2.Rule) logOnError(err, "resetMsgParsingRules2 : Compile("+r.Rule+")") if err != nil { return err } b, _ := json.Marshal(r2) log.Printf("Rule : %s\n", string(b)) rules2 = append(rules2, r2) } _, err = db.Exec(`TRUNCATE TABLE msg_rules;`) logOnError(err, "resetMsgParsingRules2 : truncate table msg_rules") if err != nil { return err } stmt, err := db.Prepare(`INSERT INTO msg_rules (prio, msg_type_id, descn, rule) VALUES (?, ?, ?, ?);`) logOnError(err, "resetMsgParsingRules2 : prepare statement") if err != nil { return err } defer stmt.Close() for _, r2 := range rules2 { b, err := json.Marshal(r2) log.Printf("Rule2 : %s\n", string(b)) _, err = stmt.Exec(r2.Priority, r2.MsgTypeID64, r2.Description, r2.Rule) logOnError(err, "resetMsgParsingRules2 : insert statement "+r2.Description) if err != nil { return err } else { log.Printf("Inserting : %d : %s => %s (%d)\n", r2.Priority, r2.Description, r2.MsgType, r2.MsgTypeID64) } } return nil } func resetMsgParsingRules() { _, err := db.Exec(`TRUNCATE TABLE msg_rules;`) failOnError(err, "resetMsgParsingRules : truncate table msg_rules") _, err = db.Exec(`INSERT INTO msg_rules (prio, msg_type_id, descn, rule) VALUES (5000, ` + strconv.Itoa(objSubTypeMessageReportAck) + `, "Player war report", "^(?P[πŸ‰πŸ¦…πŸΊπŸ¦ˆπŸ¦ŒπŸ₯”πŸŒ‘])(\\[(?P[A-Z0-9]{1,3})\\]){0,1}(?P([A-Za-z0-9 ]*)) βš”:(?P[0-9]+)(?P\\((-|\\+)[0-9]+\\)){0,1} πŸ›‘:(?P[0-9]+) Lvl: (?P[0-9]+)\\n` + `Your result on the battlefield:\\n` + `(πŸ”₯Exp: (?P[0-9]+)){0,1}(\\n)*` + `(πŸ’°Gold: (?P\\-{0,1}[0-9]+)){0,1}(\\n)*` + `(πŸ“¦Stock: (?P\\-{0,1}[0-9]+)){0,1}(\\n)*` + `(❀️Hp: (?P\\-[0-9]+)){0,1}(\\n)*` + `((?P(πŸ”‹Stamina restored))){0,1}(\\n(?P(⚑Critical strike))){0,1}$") ,(5000, ` + strconv.Itoa(objSubTypeMessageAuctionAnnounce) + `, "Auction annouce", "^Lot #(?P[0-9]+) : (?P.*)\\n` + `(Quality: (?P.*)\\n){0,1}` + `(Condition: (?P.*)\\n){0,1}` + `Seller: (?P[πŸ‰πŸ¦…πŸΊπŸ¦ˆπŸ¦ŒπŸ₯”πŸŒ‘])( ){0,1}(\\[(?P[A-Z0-9]{1,3})\\]){0,1}(?P.*){0,1}\\n` + `Current price: (?P[0-9]+) pouch\\(es\\)\\n` + `Buyer: (None|(?P[πŸ‰πŸ¦…πŸΊπŸ¦ˆπŸ¦ŒπŸ₯”πŸŒ‘])( ){0,1}(\\[(?P[A-Z0-9]{1,3})\\]){0,1}(?P.*){0,1})\\n` + `End At: (?P.*)\\n` + `Status: (?P.*)(\\n)` + `*(?s:.*)") ,(5000, ` + strconv.Itoa(objSubTypeMessageTimeAck) + `, "Time", "^In Chat Wars world now\\n` + `(?P