package main import ( "encoding/json" "log" "regexp" "strconv" ) func resetMsgParsingRules2() error { var rules []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 { // b, err := json.Marshal(r) // log.Printf("Rule : %s\n", string(b)) id, err := codeObjSubTypeId(r.MsgType) r.MsgTypeID64, err = codeObjSubTypeId(r.MsgType) logOnError(err, "resetMsgParsingRules2 : codeObjSubTypeId("+r.MsgType+")") if err != nil { return err } else { log.Printf("codeObjSubTypeId("+r.MsgType+") : %d / %d\n", id, r.MsgTypeID64) } r.re, err = regexp.Compile(r.Rule) logOnError(err, "resetMsgParsingRules2 : Compile("+r.Rule+")") if err != nil { return err } } _, 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 _, r := range rules { _, err = stmt.Exec(r.Priority, r.MsgTypeID64, r.Description, r.Rule) logOnError(err, "resetMsgParsingRules2 : insert statement "+r.Description) if err != nil { return err } else { log.Printf("Inserting : %d : %s => %s (%d)\n", r.Priority, r.Description, r.MsgType, r.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