update g_stock
This commit is contained in:
parent
9ebce1d76a
commit
72604ae70d
1
bot.go
1
bot.go
@ -646,6 +646,7 @@ func botGStock(m *tb.Message) {
|
|||||||
p := JobPayloadGStock{
|
p := JobPayloadGStock{
|
||||||
MsgID64: int64(m.ID),
|
MsgID64: int64(m.ID),
|
||||||
ChatID64: m.Chat.ID,
|
ChatID64: m.Chat.ID,
|
||||||
|
Progress: 0,
|
||||||
}
|
}
|
||||||
b, _ := json.Marshal(p)
|
b, _ := json.Marshal(p)
|
||||||
t := time.Now().UTC().Add(1 * time.Second)
|
t := time.Now().UTC().Add(1 * time.Second)
|
||||||
|
10
client.go
10
client.go
@ -31,6 +31,16 @@ func getLockedClient(id int64, createMissing bool) (*ChirpClient, bool) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func clientDelCWMsg(userID64 int64, fromMsgID64 int64, fromChatID64 int64) {
|
||||||
|
c := TGCommand{
|
||||||
|
Type: commandDeleteMsg,
|
||||||
|
FromUserID64: userID64,
|
||||||
|
FromMsgID64: fromMsgID64,
|
||||||
|
FromChatID64: fromChatID64,
|
||||||
|
}
|
||||||
|
MQTGCmdQueue <- c
|
||||||
|
}
|
||||||
|
|
||||||
func clientFwdCWMsg(userID64 int64, fromMsgID64 int64, fromChatID64 int64, toChatID64 int64) {
|
func clientFwdCWMsg(userID64 int64, fromMsgID64 int64, fromChatID64 int64, toChatID64 int64) {
|
||||||
c := TGCommand{
|
c := TGCommand{
|
||||||
Type: commandForwardMsg,
|
Type: commandForwardMsg,
|
||||||
|
7
def.go
7
def.go
@ -130,7 +130,7 @@ type ChatWarsMessageExchangeAck struct {
|
|||||||
type ChatWarsMessageGStock struct {
|
type ChatWarsMessageGStock struct {
|
||||||
Msg *ChatWarsMessage `json:"msg"`
|
Msg *ChatWarsMessage `json:"msg"`
|
||||||
OwnerID64 int64 `json:"owner_id"`
|
OwnerID64 int64 `json:"owner_id"`
|
||||||
ItemList []ChatWarsItems `json:"item_list"`
|
Stock []ChatWarsItems `json:"stock"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ChatWarsMessageWithdrawRcv struct {
|
type ChatWarsMessageWithdrawRcv struct {
|
||||||
@ -315,6 +315,8 @@ type JobPayloadStatus struct {
|
|||||||
type JobPayloadGStock struct {
|
type JobPayloadGStock struct {
|
||||||
MsgID64 int64 `json:"msg_id"`
|
MsgID64 int64 `json:"msg_id"`
|
||||||
ChatID64 int64 `json:"chat_id"`
|
ChatID64 int64 `json:"chat_id"`
|
||||||
|
Progress int64 `json:"progress"`
|
||||||
|
Stock []ChatWarsItems `json:"stock"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type JobPayloadGWithdraw struct {
|
type JobPayloadGWithdraw struct {
|
||||||
@ -537,8 +539,9 @@ const (
|
|||||||
objSubTypeJobSaveRes = 614
|
objSubTypeJobSaveRes = 614
|
||||||
objSubTypeJobVaultUserStatus = 615
|
objSubTypeJobVaultUserStatus = 615
|
||||||
objSubTypeJobVaultItemStatus = 616
|
objSubTypeJobVaultItemStatus = 616
|
||||||
objSubTypeJobFwdMsg = 617
|
objSubTypeJobFwdMsg = 617 // rename to objSubTypeJobMsgFwd
|
||||||
objSubTypeJobSetDef = 618
|
objSubTypeJobSetDef = 618
|
||||||
|
objSubTypeJobMsgDel = 619
|
||||||
objSubTypeItemResource = 701
|
objSubTypeItemResource = 701
|
||||||
objSubTypeItemAlch = 702
|
objSubTypeItemAlch = 702
|
||||||
objSubTypeItemMisc = 703
|
objSubTypeItemMisc = 703
|
||||||
|
114
job.go
114
job.go
@ -698,23 +698,119 @@ func jobBackupImport(j Job) {
|
|||||||
|
|
||||||
func jobGStock(j Job) {
|
func jobGStock(j Job) {
|
||||||
var p JobPayloadGStock
|
var p JobPayloadGStock
|
||||||
|
var resSize, resCount, alchSize, alchCount, miscSize, miscCount, recSize, recCount, partSize, partCount, otherSize, otherCount, totalSize int64
|
||||||
err := setJobStart(j.ID64)
|
err := setJobStart(j.ID64)
|
||||||
logOnError(err, "jobGStock : setJobStart")
|
logOnError(err, "jobGStock : setJobStart")
|
||||||
|
|
||||||
err = json.Unmarshal(j.Payload, &p)
|
err = json.Unmarshal(j.Payload, &p)
|
||||||
logOnError(err, "jobGStock : Unmarshal payload")
|
logOnError(err, "jobGStock : Unmarshal payload")
|
||||||
/*
|
|
||||||
clientSendCWMsg(m.Chat.ID, "/g_stock_res")
|
switch p.Progress {
|
||||||
clientSendCWMsg(m.Chat.ID, "/g_stock_alch")
|
case 0: // send /g_stock_res
|
||||||
clientSendCWMsg(m.Chat.ID, "/g_stock_misc")
|
p.Progress = 1
|
||||||
clientSendCWMsg(m.Chat.ID, "/g_stock_rec")
|
b, _ := json.Marshal(&p)
|
||||||
clientSendCWMsg(m.Chat.ID, "/g_stock_parts")
|
err = createJobCallback(objSubTypeJobGStock, c.TGUserID64, objSubTypeMessageGStockAnyAck, b, 1*time.Minute)
|
||||||
clientSendCWMsg(m.Chat.ID, "/g_stock_other")
|
logOnError(err, "jobGStock : createJobCallback")
|
||||||
*/
|
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)
|
||||||
|
p.Stock = append(p.Stock, cwm.Stock)
|
||||||
|
p.Progress = 2
|
||||||
|
b, _ := json.Marshal(&p)
|
||||||
|
err = createJobCallback(objSubTypeJobGStock, c.TGUserID64, 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")
|
||||||
|
rule, err := getMsgParsingRule(msg)
|
||||||
|
logOnError(err, "jobGStock : getMsgParsingRule")
|
||||||
|
cwm, err := parseSubTypeMessageGStockAnyAck(msg, rule.re)
|
||||||
|
p.Stock = append(p.Stock, cwm.Stock)
|
||||||
|
p.Progress = 3
|
||||||
|
b, _ := json.Marshal(&p)
|
||||||
|
err = createJobCallback(objSubTypeJobGStock, c.TGUserID64, objSubTypeMessageGStockAnyAck, b, 1*time.Minute)
|
||||||
|
logOnError(err, "jobGStock : createJobCallback")
|
||||||
|
clientSendCWMsg(cfg.Bot.Admin, "/g_stock_misc")
|
||||||
|
case 3: // send /g_stock_rec
|
||||||
|
msg, err := getObjMsg(j.Trigger)
|
||||||
|
logOnError(err, "jobGStock : getObjMsg msg")
|
||||||
|
rule, err := getMsgParsingRule(msg)
|
||||||
|
logOnError(err, "jobGStock : getMsgParsingRule")
|
||||||
|
cwm, err := parseSubTypeMessageGStockAnyAck(msg, rule.re)
|
||||||
|
p.Stock = append(p.Stock, cwm.Stock)
|
||||||
|
p.Progress = 4
|
||||||
|
b, _ := json.Marshal(&p)
|
||||||
|
err = createJobCallback(objSubTypeJobGStock, c.TGUserID64, objSubTypeMessageGStockAnyAck, b, 1*time.Minute)
|
||||||
|
logOnError(err, "jobGStock : createJobCallback")
|
||||||
|
clientSendCWMsg(cfg.Bot.Admin, "/g_stock_rec")
|
||||||
|
case 4: // send /g_stock_parts
|
||||||
|
msg, err := getObjMsg(j.Trigger)
|
||||||
|
logOnError(err, "jobGStock : getObjMsg msg")
|
||||||
|
rule, err := getMsgParsingRule(msg)
|
||||||
|
logOnError(err, "jobGStock : getMsgParsingRule")
|
||||||
|
cwm, err := parseSubTypeMessageGStockAnyAck(msg, rule.re)
|
||||||
|
p.Stock = append(p.Stock, cwm.Stock)
|
||||||
|
p.Progress = 5
|
||||||
|
b, _ := json.Marshal(&p)
|
||||||
|
err = createJobCallback(objSubTypeJobGStock, c.TGUserID64, objSubTypeMessageGStockAnyAck, b, 1*time.Minute)
|
||||||
|
logOnError(err, "jobGStock : createJobCallback")
|
||||||
|
clientSendCWMsg(cfg.Bot.Admin, "/g_stock_parts")
|
||||||
|
case 5: // send /g_stock_other
|
||||||
|
msg, err := getObjMsg(j.Trigger)
|
||||||
|
logOnError(err, "jobGStock : getObjMsg msg")
|
||||||
|
rule, err := getMsgParsingRule(msg)
|
||||||
|
logOnError(err, "jobGStock : getMsgParsingRule")
|
||||||
|
cwm, err := parseSubTypeMessageGStockAnyAck(msg, rule.re)
|
||||||
|
p.Stock = append(p.Stock, cwm.Stock)
|
||||||
|
p.Progress = 6
|
||||||
|
b, _ := json.Marshal(&p)
|
||||||
|
err = createJobCallback(objSubTypeJobGStock, c.TGUserID64, objSubTypeMessageGStockAnyAck, b, 1*time.Minute)
|
||||||
|
logOnError(err, "jobGStock : createJobCallback")
|
||||||
|
clientSendCWMsg(cfg.Bot.Admin, "/g_stock_other")
|
||||||
|
case 6: // collate everything and reply
|
||||||
|
for k, v := range p.Stock {
|
||||||
|
item, err := getObjItem(v.ItemID64)
|
||||||
|
logOnError(err, "jobGStock : getObjItem")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
totalSize = totalSize + item.Weight*v.Quantity
|
||||||
|
switch item.ItemTypeID {
|
||||||
|
case objSubTypeItemResource:
|
||||||
|
resSize += item.Weight * v.Quantity
|
||||||
|
resCount += 1
|
||||||
|
case objSubTypeItemAlch:
|
||||||
|
alchSize += item.Weight * v.Quantity
|
||||||
|
alchCount += 1
|
||||||
|
case objSubTypeItemMisc:
|
||||||
|
miscSize += item.Weight * v.Quantity
|
||||||
|
miscCount += 1
|
||||||
|
case objSubTypeItemRecipe:
|
||||||
|
recSize += item.Weight * v.Quantity
|
||||||
|
recCount += 1
|
||||||
|
case objSubTypeItemPart:
|
||||||
|
partSize += item.Weight * v.Quantity
|
||||||
|
partCount += 1
|
||||||
|
case objSubTypeItemOther:
|
||||||
|
otherSize += item.Weight * v.Quantity
|
||||||
|
otherCount += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
txt := fmt.Sprintf(`Current stock [%d/38000] :\n`+
|
||||||
|
` - Resources : %d (%d)\n`+
|
||||||
|
` - Alchemist : %d (%d)\n`+
|
||||||
|
` - Misc stuff : %d (%d)\n`+
|
||||||
|
` - Recipes : %d (%d)\n`+
|
||||||
|
` - Parts : %d (%d)\n`+
|
||||||
|
` - Other : %d (%d)\n`, totalSize, resSize, resCount, alchSize, alchCount, miscSize, miscCount, recSize, recCount, partsSize, partsCount, otherSize, otherCount)
|
||||||
|
|
||||||
m := TGCommand{
|
m := TGCommand{
|
||||||
Type: commandReplyMsg,
|
Type: commandReplyMsg,
|
||||||
Text: "Message sent.",
|
Text: txt,
|
||||||
FromMsgID64: p.MsgID64,
|
FromMsgID64: p.MsgID64,
|
||||||
FromChatID64: p.ChatID64,
|
FromChatID64: p.ChatID64,
|
||||||
}
|
}
|
||||||
|
6
msg.go
6
msg.go
@ -243,7 +243,7 @@ func parseSubTypeMessageWithdrawRcv(m *ChatWarsMessage, r *regexp.Regexp) (*Chat
|
|||||||
|
|
||||||
func parseSubTypeMessageGStockAnyAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWarsMessageGStock, error) {
|
func parseSubTypeMessageGStockAnyAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWarsMessageGStock, error) {
|
||||||
cwm := ChatWarsMessageGStock{}
|
cwm := ChatWarsMessageGStock{}
|
||||||
items := []ChatWarsItems{}
|
stock := []ChatWarsItems{}
|
||||||
re := regexp.MustCompile(`\n([0-9a-z]+) (.*) x ([0-9]+)`)
|
re := regexp.MustCompile(`\n([0-9a-z]+) (.*) x ([0-9]+)`)
|
||||||
for _, l := range re.FindAllStringSubmatch(r.ReplaceAllString(m.Text, "${Stock}"), -1) {
|
for _, l := range re.FindAllStringSubmatch(r.ReplaceAllString(m.Text, "${Stock}"), -1) {
|
||||||
i := getObjItemID(l[1], l[2])
|
i := getObjItemID(l[1], l[2])
|
||||||
@ -253,10 +253,10 @@ func parseSubTypeMessageGStockAnyAck(m *ChatWarsMessage, r *regexp.Regexp) (*Cha
|
|||||||
ItemID64: i,
|
ItemID64: i,
|
||||||
Quantity: q,
|
Quantity: q,
|
||||||
}
|
}
|
||||||
items = append(items, item)
|
stock = append(stock, item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cwm.ItemList = items
|
cwm.Stock = stock
|
||||||
cwm.Msg = m
|
cwm.Msg = m
|
||||||
return &cwm, nil
|
return &cwm, nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user