fwd job
This commit is contained in:
parent
418f62c07e
commit
5102375a0e
@ -20,3 +20,5 @@ path = chirpnest
|
|||||||
admin = 0
|
admin = 0
|
||||||
guildname = Guild
|
guildname = Guild
|
||||||
guild = GLD
|
guild = GLD
|
||||||
|
mainchat = 0
|
||||||
|
depositchat = 0
|
11
client.go
11
client.go
@ -30,6 +30,17 @@ func getLockedClient(id int64, createMissing bool) (*ChirpClient, bool) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func clientFwdCWMsg(fromMsgID64 int64, fromChatID64 int64, toChatID64 int64) {
|
||||||
|
c := TGCommand{
|
||||||
|
Type: commandForwardMsg,
|
||||||
|
FromMsgID64: fromMsgID64,
|
||||||
|
FromChatID64: fromChatID64,
|
||||||
|
ToChatID64: toChatID64,
|
||||||
|
}
|
||||||
|
MQTGCmdQueue <- c
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func clientSendCWMsg(userID64 int64, s string) {
|
func clientSendCWMsg(userID64 int64, s string) {
|
||||||
clientSendCWMsgDelay(userID64, s, 0)
|
clientSendCWMsgDelay(userID64, s, 0)
|
||||||
}
|
}
|
||||||
|
16
def.go
16
def.go
@ -109,6 +109,12 @@ type ChatWarsMessageGStock struct {
|
|||||||
ItemList []ChatWarsItems `json:"item_list"`
|
ItemList []ChatWarsItems `json:"item_list"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ChatWarsMessageGDepositAck struct {
|
||||||
|
Msg *ChatWarsMessage `json:"msg"`
|
||||||
|
ItemID64 int64 `json:"item_id"`
|
||||||
|
Quantity int64 `json:"quantity"`
|
||||||
|
}
|
||||||
|
|
||||||
type ChatWarsMessageReportAck struct {
|
type ChatWarsMessageReportAck struct {
|
||||||
ObjID64 int64 `json:"obj_id"`
|
ObjID64 int64 `json:"obj_id"`
|
||||||
}
|
}
|
||||||
@ -268,6 +274,11 @@ type JobPayloadGDeposit struct {
|
|||||||
Status int `json:"status"`
|
Status int `json:"status"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type JobPayloadGDepositFwd struct {
|
||||||
|
ItemID64 int64 `json:"item_id"`
|
||||||
|
Quantity int64 `json:"quantity"`
|
||||||
|
}
|
||||||
|
|
||||||
type JobPayloadSaveRes struct {
|
type JobPayloadSaveRes struct {
|
||||||
MsgID64 int64 `json:"msg_id"`
|
MsgID64 int64 `json:"msg_id"`
|
||||||
ChatID64 int64 `json:"chat_id"`
|
ChatID64 int64 `json:"chat_id"`
|
||||||
@ -410,6 +421,8 @@ const (
|
|||||||
objSubTypeMessageBusy = 365 // too busy now
|
objSubTypeMessageBusy = 365 // too busy now
|
||||||
objSubTypeMessageStockEmpty = 366 // [empty]
|
objSubTypeMessageStockEmpty = 366 // [empty]
|
||||||
objSubTypeMessageStockAnyAck = 367 // list of stock
|
objSubTypeMessageStockAnyAck = 367 // list of stock
|
||||||
|
objSubTypeMessageGDepositReq = 368 // /g_deposit xx y (done)
|
||||||
|
objSubTypeMessageGDepositAck = 369 // Deposited successfully: xx (y) (done)
|
||||||
objSubTypeJobPillage = 601
|
objSubTypeJobPillage = 601
|
||||||
objSubTypeJobTribute = 602
|
objSubTypeJobTribute = 602
|
||||||
objSubTypeJobStatus = 603
|
objSubTypeJobStatus = 603
|
||||||
@ -422,7 +435,8 @@ const (
|
|||||||
objSubTypeJobBackupExport = 610
|
objSubTypeJobBackupExport = 610
|
||||||
objSubTypeJobBackupImport = 611
|
objSubTypeJobBackupImport = 611
|
||||||
objSubTypeJobGDeposit = 612
|
objSubTypeJobGDeposit = 612
|
||||||
objSubTypeJobSaveRes = 613
|
objSubTypeJobGDepositForward = 613
|
||||||
|
objSubTypeJobSaveRes = 614
|
||||||
objSubTypeItemResource = 701
|
objSubTypeItemResource = 701
|
||||||
objSubTypeItemAlch = 702
|
objSubTypeItemAlch = 702
|
||||||
objSubTypeItemMisc = 703
|
objSubTypeItemMisc = 703
|
||||||
|
25
job.go
25
job.go
@ -724,6 +724,31 @@ func jobGStock(j Job) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func jobGDepositForward(j Job) {
|
||||||
|
var p JobPayloadGDepositFwd
|
||||||
|
err := setJobStart(j.ID64)
|
||||||
|
logOnError(err, "jobGDepositForward : setJobStart")
|
||||||
|
|
||||||
|
err = json.Unmarshal(j.Payload, &p)
|
||||||
|
logOnError(err, "jobGDepositForward : Unmarshal payload")
|
||||||
|
|
||||||
|
msg, err := getObjMsg(j.Trigger)
|
||||||
|
logOnError(err, "jobGDepositForward : getObjMsg")
|
||||||
|
rule, err := getMsgParsingRule(msg)
|
||||||
|
logOnError(err, "jobGDepositForward : getMsgParsingRule")
|
||||||
|
cwm, err := parseSubTypeMessageGDepositAck(msg, rule.re)
|
||||||
|
|
||||||
|
if cwm.ItemID64 == p.ItemID64 && cwm.Quantity == p.Quantity {
|
||||||
|
clientFwdCWMsg(cwm.Msg.ID64, cwm.Msg.ChatID64, cfg.Bot.Depositchat)
|
||||||
|
|
||||||
|
err = setJobDone(j.ID64)
|
||||||
|
logOnError(err, "jobGDeposit : setJobDone")
|
||||||
|
} else {
|
||||||
|
setJobCallback(j.ID64, j.UserID64, objSubTypeMessageGDepositAck)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func jobGDeposit(j Job) {
|
func jobGDeposit(j Job) {
|
||||||
var p JobPayloadGDeposit
|
var p JobPayloadGDeposit
|
||||||
err := setJobStart(j.ID64)
|
err := setJobStart(j.ID64)
|
||||||
|
2
main.go
2
main.go
@ -38,6 +38,8 @@ type Config struct {
|
|||||||
Admin int64
|
Admin int64
|
||||||
Guildname string
|
Guildname string
|
||||||
Guild string
|
Guild string
|
||||||
|
Mainchat int64
|
||||||
|
Depositchat int64
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
msg.go
14
msg.go
@ -23,14 +23,20 @@ func getMsgParsingRule(m *ChatWarsMessage) (*MessageParsingRule, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func parseSubTypeMessageGDepositAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWarsMessageGDepositAck, error) {
|
||||||
|
cwm := ChatWarsMessageGDepositAck{}
|
||||||
|
|
||||||
|
cwm.Item, _ = getObjItemID(``, r.ReplaceAllString(m.Text, "${Used}"))
|
||||||
|
cwm.Quantity, _ = strconv.ParseInt(r.ReplaceAllString(m.Text, "${Quantity}"), 10, 64)
|
||||||
|
|
||||||
|
cwm.Msg = m
|
||||||
|
return &cwm, nil
|
||||||
|
}
|
||||||
|
|
||||||
func parseSubTypeMessageStockAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWarsMessageStockAck, error) {
|
func parseSubTypeMessageStockAck(m *ChatWarsMessage, r *regexp.Regexp) (*ChatWarsMessageStockAck, error) {
|
||||||
cwm := ChatWarsMessageStockAck{}
|
cwm := ChatWarsMessageStockAck{}
|
||||||
items := []ChatWarsItems{}
|
items := []ChatWarsItems{}
|
||||||
|
|
||||||
log.Printf("parseSubTypeMessageReport : Stock Ack identified\n")
|
|
||||||
log.Printf("parseSubTypeMessageReport : Used : %s\n", r.ReplaceAllString(m.Text, "${Used}"))
|
|
||||||
log.Printf("parseSubTypeMessageReport : Available : %s\n", r.ReplaceAllString(m.Text, "${Available}"))
|
|
||||||
|
|
||||||
re := regexp.MustCompile(`\n([a-zA-Z ]+) \(([0-9]+)\)`)
|
re := regexp.MustCompile(`\n([a-zA-Z ]+) \(([0-9]+)\)`)
|
||||||
for _, l := range re.FindAllStringSubmatch(r.ReplaceAllString(m.Text, "${Items}"), -1) {
|
for _, l := range re.FindAllStringSubmatch(r.ReplaceAllString(m.Text, "${Items}"), -1) {
|
||||||
i := getObjItemID(``, l[1])
|
i := getObjItemID(``, l[1])
|
||||||
|
2
rules.go
2
rules.go
@ -197,6 +197,8 @@ func resetMsgParsingRules() {
|
|||||||
,(5000, ` + strconv.Itoa(objSubTypeMessageBusy) + `, "Too busy now", "^You are too busy with a different adventure. Try a bit later.$")
|
,(5000, ` + strconv.Itoa(objSubTypeMessageBusy) + `, "Too busy now", "^You are too busy with a different adventure. Try a bit later.$")
|
||||||
,(5000, ` + strconv.Itoa(objSubTypeMessageStockEmpty) + `, "Stock Empty", "^\\[empty\\]$")
|
,(5000, ` + strconv.Itoa(objSubTypeMessageStockEmpty) + `, "Stock Empty", "^\\[empty\\]$")
|
||||||
,(5000, ` + strconv.Itoa(objSubTypeMessageStockAnyAck) + `, "Any Stock Ack", "^$")
|
,(5000, ` + strconv.Itoa(objSubTypeMessageStockAnyAck) + `, "Any Stock Ack", "^$")
|
||||||
|
,(5000, ` + strconv.Itoa(objSubTypeMessageGDepositReq) + `, "GDeposit Req", "^/g_deposit (?P<Item>[0-9]+) (?P<Quantity>[0-9]+)$")
|
||||||
|
,(5000, ` + strconv.Itoa(objSubTypeMessageGDepositAck) + `, "GDeposit Ack", "^Deposited successfully: (?P<Item>.+) \\((?P<Quantity>[0-9]+)\\)$")
|
||||||
;`)
|
;`)
|
||||||
failOnError(err, "resetMsgParsingRules : populate table msg_rules")
|
failOnError(err, "resetMsgParsingRules : populate table msg_rules")
|
||||||
}
|
}
|
||||||
|
3
sql.go
3
sql.go
@ -502,6 +502,8 @@ func initDB() {
|
|||||||
,(` + strconv.Itoa(objSubTypeMessageBusy) + `, "busy", "Busy", ` + strconv.Itoa(objTypeMessage) + `)
|
,(` + strconv.Itoa(objSubTypeMessageBusy) + `, "busy", "Busy", ` + strconv.Itoa(objTypeMessage) + `)
|
||||||
,(` + strconv.Itoa(objSubTypeMessageStockEmpty) + `, "stock_empty", "Stock Empty", ` + strconv.Itoa(objTypeMessage) + `)
|
,(` + strconv.Itoa(objSubTypeMessageStockEmpty) + `, "stock_empty", "Stock Empty", ` + strconv.Itoa(objTypeMessage) + `)
|
||||||
,(` + strconv.Itoa(objSubTypeMessageStockAnyAck) + `, "stock_any_ack", "Stock Any Ack", ` + strconv.Itoa(objTypeMessage) + `)
|
,(` + strconv.Itoa(objSubTypeMessageStockAnyAck) + `, "stock_any_ack", "Stock Any Ack", ` + strconv.Itoa(objTypeMessage) + `)
|
||||||
|
,(` + strconv.Itoa(objSubTypeMessageGDepositReq) + `, "g_deposit_req", "GDeposit Req", ` + strconv.Itoa(objTypeMessage) + `)
|
||||||
|
,(` + strconv.Itoa(objSubTypeMessageGDepositAck) + `, "g_deposit_ack", "GDeposit Ack", ` + strconv.Itoa(objTypeMessage) + `)
|
||||||
,(` + strconv.Itoa(objSubTypeJobPillage) + `, "job_pillage", "Pillage job", ` + strconv.Itoa(objTypeJob) + `)
|
,(` + strconv.Itoa(objSubTypeJobPillage) + `, "job_pillage", "Pillage job", ` + strconv.Itoa(objTypeJob) + `)
|
||||||
,(` + strconv.Itoa(objSubTypeJobTribute) + `, "job_tribute", "Tribute job", ` + strconv.Itoa(objTypeJob) + `)
|
,(` + strconv.Itoa(objSubTypeJobTribute) + `, "job_tribute", "Tribute job", ` + strconv.Itoa(objTypeJob) + `)
|
||||||
,(` + strconv.Itoa(objSubTypeJobWithdrawal) + `, "job_withdraw", "Withdrawal job", ` + strconv.Itoa(objTypeJob) + `)
|
,(` + strconv.Itoa(objSubTypeJobWithdrawal) + `, "job_withdraw", "Withdrawal job", ` + strconv.Itoa(objTypeJob) + `)
|
||||||
@ -513,6 +515,7 @@ func initDB() {
|
|||||||
,(` + strconv.Itoa(objSubTypeJobBackupExport) + `, "job_backup_export", "Export Backup", ` + strconv.Itoa(objTypeJob) + `)
|
,(` + strconv.Itoa(objSubTypeJobBackupExport) + `, "job_backup_export", "Export Backup", ` + strconv.Itoa(objTypeJob) + `)
|
||||||
,(` + strconv.Itoa(objSubTypeJobBackupImport) + `, "job_backup_import", "Import Backup", ` + strconv.Itoa(objTypeJob) + `)
|
,(` + strconv.Itoa(objSubTypeJobBackupImport) + `, "job_backup_import", "Import Backup", ` + strconv.Itoa(objTypeJob) + `)
|
||||||
,(` + strconv.Itoa(objSubTypeJobGDeposit) + `, "job_gdeposit", "GDeposit job", ` + strconv.Itoa(objTypeJob) + `)
|
,(` + strconv.Itoa(objSubTypeJobGDeposit) + `, "job_gdeposit", "GDeposit job", ` + strconv.Itoa(objTypeJob) + `)
|
||||||
|
,(` + strconv.Itoa(objSubTypeJobGDepositForward) + `, "job_gdeposit_fwd", "GDeposit Forward job", ` + strconv.Itoa(objTypeJob) + `)
|
||||||
,(` + strconv.Itoa(objSubTypeJobSaveRes) + `, "job_save_res", "Save resources job", ` + strconv.Itoa(objTypeJob) + `)
|
,(` + strconv.Itoa(objSubTypeJobSaveRes) + `, "job_save_res", "Save resources job", ` + strconv.Itoa(objTypeJob) + `)
|
||||||
,(` + strconv.Itoa(objSubTypeItemResource) + `, "item_res", "Time", ` + strconv.Itoa(objTypeItem) + `)
|
,(` + strconv.Itoa(objSubTypeItemResource) + `, "item_res", "Time", ` + strconv.Itoa(objTypeItem) + `)
|
||||||
,(` + strconv.Itoa(objSubTypeItemAlch) + `, "item_alch", "Time", ` + strconv.Itoa(objTypeItem) + `)
|
,(` + strconv.Itoa(objSubTypeItemAlch) + `, "item_alch", "Time", ` + strconv.Itoa(objTypeItem) + `)
|
||||||
|
@ -533,6 +533,8 @@ func JobWorker(id int, jobs <-chan Job) {
|
|||||||
jobGStock(j)
|
jobGStock(j)
|
||||||
case objSubTypeJobGDeposit:
|
case objSubTypeJobGDeposit:
|
||||||
jobGDeposit(j)
|
jobGDeposit(j)
|
||||||
|
case objSubTypeJobGDepositForward:
|
||||||
|
jobGDepositForward(j)
|
||||||
default:
|
default:
|
||||||
log.Printf("jobWorker["+strconv.Itoa(id)+"] : No handler for job type #%d.\n", j.JobTypeID)
|
log.Printf("jobWorker["+strconv.Itoa(id)+"] : No handler for job type #%d.\n", j.JobTypeID)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user