test alch stuff

This commit is contained in:
shoopea 2020-02-29 16:43:04 +08:00
parent 4ee42d8d4a
commit b265890b68
8 changed files with 224 additions and 20 deletions

35
bot.go
View File

@ -934,6 +934,41 @@ func botUserConfig(m *ChatWarsMessage) {
return return
} }
func botAlchAll(m *ChatWarsMessage) {
p := JobPayloadAlchAll{
MsgID64: m.ID64,
ChatID64: m.ChatID64,
Status: 0,
Mana: 0,
MaxMana: 0,
}
b, _ := json.Marshal(p)
t := time.Now().UTC().Add(1 * time.Second)
_, err = createJob(cacheObjSubType[`job_alch_all`], objJobPriority, userID64, 0, t, b)
if err != nil {
c := TGCommand{
Type: commandReplyMsg,
Text: fmt.Sprintf("%s", err),
FromMsgID64: m.ID64,
FromChatID64: m.ChatID64,
}
TGCmdQueue <- c
} else {
c := TGCommand{
Type: commandReplyMsg,
Text: "Alch all coming",
FromMsgID64: m.ID64,
FromChatID64: m.ChatID64,
}
TGCmdQueue <- c
}
return
}
func botCraftAll(m *ChatWarsMessage, r *regexp.Regexp) { func botCraftAll(m *ChatWarsMessage, r *regexp.Regexp) {
if hasUnfinishedJob(cacheObjSubType[`job_craft_all`]) { if hasUnfinishedJob(cacheObjSubType[`job_craft_all`]) {
c := TGCommand{ c := TGCommand{

View File

@ -689,6 +689,26 @@
"name": "Peace Up Withdraw", "name": "Peace Up Withdraw",
"obj_type": "msg" "obj_type": "msg"
}, },
{
"intl_id": "msg_bot_alch_all",
"name": "Alch all",
"obj_type": "msg"
},
{
"intl_id": "msg_alch_stock_req",
"name": "Alch stock req",
"obj_type": "msg"
},
{
"intl_id": "msg_alch_stock_ack",
"name": "Alch stock ack",
"obj_type": "msg"
},
{
"intl_id": "msg_skill_too_low",
"name": "Skill too low",
"obj_type": "msg"
},
{ {
"intl_id": "job_pillage", "intl_id": "job_pillage",
"name": "Pillage job", "name": "Pillage job",
@ -799,6 +819,11 @@
"name": "Craft all items summary job", "name": "Craft all items summary job",
"obj_type": "job" "obj_type": "job"
}, },
{
"intl_id": "job_alch_all",
"name": "Craft all items in stock job",
"obj_type": "job"
},
{ {
"intl_id": "job_shops", "intl_id": "job_shops",
"name": "Shops summary job", "name": "Shops summary job",

View File

@ -129,7 +129,15 @@
}, },
{ {
"prio": 5000, "prio": 5000,
"descn": "Me request", "descn": "Me request #1",
"rule": "^/me$",
"msg_type": "msg_me_req",
"chat_id": 0,
"user_id": 0
},
{
"prio": 5000,
"descn": "Me request #2",
"rule": "^🏅Me$", "rule": "^🏅Me$",
"msg_type": "msg_me_req", "msg_type": "msg_me_req",
"chat_id": 0, "chat_id": 0,
@ -471,6 +479,30 @@
"chat_id": 0, "chat_id": 0,
"user_id": 0 "user_id": 0
}, },
{
"prio": 5000,
"descn": "Alch stock Req",
"rule": "^/alch$",
"msg_type": "msg_alch_stock_req",
"chat_id": 0,
"user_id": 0
},
{
"prio": 5000,
"descn": "Alch stock Ack",
"rule": "^📦Your stock:(?P<Stuff>(\\n/aa_[0-9]{2} [a-zA-Z ]+ x [0-9]+)+)$",
"msg_type": "msg_alch_stock_ack",
"chat_id": 0,
"user_id": 0
},
{
"prio": 5000,
"descn": "Skill too low",
"rule": "^[Skill level too low]$",
"msg_type": "msg_skill_too_low",
"chat_id": 0,
"user_id": 0
},
{ {
"prio": 5000, "prio": 5000,
"descn": "Guild stock Req", "descn": "Guild stock Req",

10
def.go
View File

@ -292,6 +292,8 @@ type ChatWarsMessageMeAck struct {
Level int64 `json:"level"` Level int64 `json:"level"`
ExpNow int64 `json:"exp_now"` ExpNow int64 `json:"exp_now"`
ExpLvl int64 `json:"exp_lvl"` ExpLvl int64 `json:"exp_lvl"`
ManaNow int64 `json:"mana_now"`
ManaMax int64 `json:"mana_max"`
} }
type ChatWarsMessageGRolesAck struct { type ChatWarsMessageGRolesAck struct {
@ -584,6 +586,14 @@ type JobPayloadCraftAll struct {
VaultJobID64 int64 `json:"vault_job_id"` VaultJobID64 int64 `json:"vault_job_id"`
} }
type JobPayloadAlchAll struct {
MsgID64 int64 `json:"msg_id"`
ChatID64 int64 `json:"chat_id"`
Status int64 `json:"status"`
Mana int64 `json:"mana"`
MaxMana int64 `json:"max_mana"`
}
type JobPayloadCheckVaultLimit struct { type JobPayloadCheckVaultLimit struct {
Status int64 `json:"status"` Status int64 `json:"status"`
VaultJobID64 int64 `json:"vault_job_id"` VaultJobID64 int64 `json:"vault_job_id"`

81
job.go
View File

@ -2029,6 +2029,87 @@ func jobCraftItem(j Job) {
} }
func jobAlchAll(j Job) {
var p JobPayloadAlchAll
err := setJobStart(j.ID64)
logOnError(err, "jobAlchAll : setJobStart")
err = json.Unmarshal(j.Payload, &p)
logOnError(err, "jobAlchAll : Unmarshal payload")
if p.Status == 0 {
p.Status = 1
err = setJobPayloadJSON(j.ID64, p)
logOnError(err, "jobAlchAll : setJobPayloadJSON(p)")
setJobCallback(j.ID64, j.UserID64, cacheObjSubType[`msg_me_ack`])
rescheduleJob(j.ID64, 0, time.Unix(maxUnixTimestamp, 0).UTC())
clientSendCWMsgDelay(j.UserID64, "/me", 0*time.Second)
return
} else if p.Status == 1 && j.Trigger != 0 {
m, err := getObjMsg(j.Trigger)
logOnError(err, "jobAlchAll : getObjMsg("+strconv.FormatInt(j.Trigger, 10)+")")
if err == nil {
rule, err := getMsgParsingRule(&m)
logOnError(err, "jobAlchAll : getMsgParsingRule")
if rule.MsgTypeID64 == cacheObjSubType[`msg_me_ack`] {
cwm, err := parseSubTypeMessageMeAck(m, rule.re)
p.Status = 2
p.Mana = cwm.ManaNow
p.ManaMax = cwm.ManaMax
err = setJobPayloadJSON(j.ID64, p)
logOnError(err, "jobAlchAll : setJobPayloadJSON(p)")
setJobCallback(j.ID64, j.UserID64, cacheObjSubType[`msg_skill_too_low`])
setJobCallback(j.ID64, j.UserID64, cacheObjSubType[`msg_alch_stock_ack`])
rescheduleJob(j.ID64, 0, time.Unix(maxUnixTimestamp, 0).UTC())
clientSendCWMsgDelay(j.UserID64, "/alch", 2*time.Second)
return
}
}
} else if p.Status == 2 && j.Trigger != 0 {
m, err := getObjMsg(j.Trigger)
logOnError(err, "jobAlchAll : getObjMsg("+strconv.FormatInt(j.Trigger, 10)+")")
if err == nil {
rule, err := getMsgParsingRule(&m)
logOnError(err, "jobAlchAll : getMsgParsingRule")
if rule.MsgTypeID64 == cacheObjSubType[`msg_alch_stock_ack`] {
c := TGCommand{
Type: commandReplyMsg,
Text: "Success.",
FromMsgID64: p.MsgID64,
FromChatID64: p.ChatID64,
ParseMode: cmdParseModeHTML,
}
TGCmdQueue <- c
err = setJobDone(j.ID64)
logOnError(err, "jobAlchAll : setJobDone")
return
}
}
}
c := TGCommand{
Type: commandReplyMsg,
Text: "Failed.",
FromMsgID64: p.MsgID64,
FromChatID64: p.ChatID64,
ParseMode: cmdParseModeHTML,
}
TGCmdQueue <- c
err = setJobDone(j.ID64)
logOnError(err, "jobAlchAll : setJobDone")
return
}
func jobCraftAll(j Job) { func jobCraftAll(j Job) {
var ( var (
p JobPayloadCraftAll p JobPayloadCraftAll

45
msg.go
View File

@ -409,25 +409,32 @@ func parseSubTypeMessageMeAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWarsMe
i, _ = strconv.ParseInt(r.ReplaceAllString(m.Text, "${Level}"), 10, 64) i, _ = strconv.ParseInt(r.ReplaceAllString(m.Text, "${Level}"), 10, 64)
cwm.Level = i cwm.Level = i
/* i, _ = strconv.ParseInt(r.ReplaceAllString(m.Text, "${ManaNow}"), 10, 64)
log.Printf("parseSubTypeMessageMeAck : Me report identified\n") cwm.ManaNow = i
log.Printf("parseSubTypeMessageMeAck : Castle : %s\n", r.ReplaceAllString(m.Text, "${Castle}"))
log.Printf("parseSubTypeMessageMeAck : Level : %s\n", r.ReplaceAllString(m.Text, "${Level}")) i, _ = strconv.ParseInt(r.ReplaceAllString(m.Text, "${ManaMax}"), 10, 64)
log.Printf("parseSubTypeMessageMeAck : Class : %s\n", cwm.Class) cwm.ManaMax = i
log.Printf("parseSubTypeMessageMeAck : Atk : %s\n", r.ReplaceAllString(m.Text, "${Atk}"))
log.Printf("parseSubTypeMessageMeAck : Def : %s\n", r.ReplaceAllString(m.Text, "${Def}")) log.Printf("parseSubTypeMessageMeAck : Me report identified\n")
log.Printf("parseSubTypeMessageMeAck : ExpNow : %s\n", r.ReplaceAllString(m.Text, "${ExpNow}")) log.Printf("parseSubTypeMessageMeAck : Castle : %s\n", r.ReplaceAllString(m.Text, "${Castle}"))
log.Printf("parseSubTypeMessageMeAck : ExpLvl : %s\n", r.ReplaceAllString(m.Text, "${ExpLvl}")) log.Printf("parseSubTypeMessageMeAck : Level : %s\n", r.ReplaceAllString(m.Text, "${Level}"))
log.Printf("parseSubTypeMessageMeAck : StaminaNow : %s\n", r.ReplaceAllString(m.Text, "${StaminaNow}")) log.Printf("parseSubTypeMessageMeAck : Class : %s\n", cwm.Class)
log.Printf("parseSubTypeMessageMeAck : StaminaMax : %s\n", r.ReplaceAllString(m.Text, "${StaminaMax}")) log.Printf("parseSubTypeMessageMeAck : Atk : %s\n", r.ReplaceAllString(m.Text, "${Atk}"))
log.Printf("parseSubTypeMessageMeAck : Gold : %s\n", r.ReplaceAllString(m.Text, "${Gold}")) log.Printf("parseSubTypeMessageMeAck : Def : %s\n", r.ReplaceAllString(m.Text, "${Def}"))
log.Printf("parseSubTypeMessageMeAck : Pogs : %s\n", r.ReplaceAllString(m.Text, "${Pogs}")) log.Printf("parseSubTypeMessageMeAck : ExpNow : %s\n", r.ReplaceAllString(m.Text, "${ExpNow}"))
log.Printf("parseSubTypeMessageMeAck : Gems : %s\n", r.ReplaceAllString(m.Text, "${Gems}")) log.Printf("parseSubTypeMessageMeAck : ExpLvl : %s\n", r.ReplaceAllString(m.Text, "${ExpLvl}"))
log.Printf("parseSubTypeMessageMeAck : AtkGear : %s\n", r.ReplaceAllString(m.Text, "${AtkGear}")) log.Printf("parseSubTypeMessageMeAck : StaminaNow : %s\n", r.ReplaceAllString(m.Text, "${StaminaNow}"))
log.Printf("parseSubTypeMessageMeAck : DefGear : %s\n", r.ReplaceAllString(m.Text, "${DefGear}")) log.Printf("parseSubTypeMessageMeAck : StaminaMax : %s\n", r.ReplaceAllString(m.Text, "${StaminaMax}"))
log.Printf("parseSubTypeMessageMeAck : BagUsed : %s\n", r.ReplaceAllString(m.Text, "${BagUsed}")) log.Printf("parseSubTypeMessageMeAck : ManaNow : %s\n", r.ReplaceAllString(m.Text, "${ManaNow}"))
log.Printf("parseSubTypeMessageMeAck : BagDispo : %s\n", r.ReplaceAllString(m.Text, "${BagDispo}")) log.Printf("parseSubTypeMessageMeAck : ManaMax : %s\n", r.ReplaceAllString(m.Text, "${ManaMax}"))
*/ log.Printf("parseSubTypeMessageMeAck : Gold : %s\n", r.ReplaceAllString(m.Text, "${Gold}"))
log.Printf("parseSubTypeMessageMeAck : Pogs : %s\n", r.ReplaceAllString(m.Text, "${Pogs}"))
log.Printf("parseSubTypeMessageMeAck : Gems : %s\n", r.ReplaceAllString(m.Text, "${Gems}"))
log.Printf("parseSubTypeMessageMeAck : AtkGear : %s\n", r.ReplaceAllString(m.Text, "${AtkGear}"))
log.Printf("parseSubTypeMessageMeAck : DefGear : %s\n", r.ReplaceAllString(m.Text, "${DefGear}"))
log.Printf("parseSubTypeMessageMeAck : BagUsed : %s\n", r.ReplaceAllString(m.Text, "${BagUsed}"))
log.Printf("parseSubTypeMessageMeAck : BagDispo : %s\n", r.ReplaceAllString(m.Text, "${BagDispo}"))
cwm.Msg = m cwm.Msg = m
return &cwm, nil return &cwm, nil
} }

View File

@ -80,6 +80,16 @@ func resetMsgParsingRules() error {
SenderUserID64: id, SenderUserID64: id,
} }
rules2 = append(rules2, r) rules2 = append(rules2, r)
r = MessageParsingRule{
Priority: 9999,
Description: "Alch your supply",
Rule: "^/alch_all$",
MsgTypeID64: cacheObjSubType[`msg_bot_alch_all`],
ChatID64: chats[id],
SenderUserID64: users[id],
}
rules2 = append(rules2, r)
} }
} }
muxClients.RUnlock() muxClients.RUnlock()

View File

@ -552,6 +552,8 @@ func SQLIdentifyMsgWorker(id int, objIds <-chan int64) {
botShutdown() botShutdown()
case cacheObjSubType[`msg_bot_rage_up`]: case cacheObjSubType[`msg_bot_rage_up`]:
case cacheObjSubType[`msg_bot_peace_up`]: case cacheObjSubType[`msg_bot_peace_up`]:
case cacheObjSubType[`msg_bot_alch_all`]:
botAlchAll(m)
default: 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) //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)
} }
@ -658,6 +660,8 @@ func JobWorker(id int, jobs <-chan Job) {
jobShops(j) jobShops(j)
case cacheObjSubType[`job_shops_slave`]: case cacheObjSubType[`job_shops_slave`]:
jobShopsSlave(j) jobShopsSlave(j)
case cacheObjSubType[`job_alch_all`]:
jobAlchAll(j)
default: default:
log.Printf("jobWorker["+strconv.Itoa(id)+"] : No handler for job type #%d.\n", j.JobTypeID64) log.Printf("jobWorker["+strconv.Itoa(id)+"] : No handler for job type #%d.\n", j.JobTypeID64)
} }