diff --git a/def.go b/def.go index 88de1ea..3e1cc88 100644 --- a/def.go +++ b/def.go @@ -13,10 +13,10 @@ type DataBackup struct { } type MQKeepAlive struct { - UserID64 int64 `json:"user_id"` - Nickname string `json:"nick"` - Queue string `json:"queue"` - Date time.Time `json:"date"` + TGUserID64 int64 `json:"tg_user_id"` + Nickname string `json:"nick"` + Queue string `json:"queue"` + Date time.Time `json:"date"` } type MQClient struct { diff --git a/items.go b/items.go index bb5fecf..4bb7478 100644 --- a/items.go +++ b/items.go @@ -108,7 +108,10 @@ func resetObjItem() { reloadObjItem(`513`, `Silver Arrow`, objSubTypeItemMisc, 10) reloadObjItem(`515`, `Broad Arrows Pack`, objSubTypeItemMisc, -1) reloadObjItem(`517`, `Heavy Arrows Pack`, objSubTypeItemMisc, -1) + reloadObjItem(`518`, `Hay`, objSubTypeItemResource, -1) reloadObjItem(`519`, `Compound Arrows Pack`, objSubTypeItemMisc, -1) + reloadObjItem(`520`, `Hamsters`, objSubTypeItemResource, -1) + reloadObjItem(`521`, `Cheese`, objSubTypeItemResource, -1) reloadObjItem(`614`, `🎟Gift Coupon 'Pig'`, objSubTypeItemMisc, 1) reloadObjItem(`615`, `🎟Gift Coupon 'Horse'`, objSubTypeItemMisc, 1) reloadObjItem(`616`, `🎟Gift Coupon 'Owl'`, objSubTypeItemMisc, 1) diff --git a/main.go b/main.go index 35157a8..9dbc897 100644 --- a/main.go +++ b/main.go @@ -51,7 +51,7 @@ var ( cfg Config RndSrc *rand.Rand - RndMu sync.Mutex + RndMux sync.Mutex MQCWMsgQueue chan ChatWarsMessage SQLMsgIdentifyQueue chan int64 @@ -64,6 +64,7 @@ var ( clientsCW *sync.Map clientsKeepAlive *sync.Map + muxKeepAlive sync.Mutex ) func PrintText(m *tb.Message) { diff --git a/workers.go b/workers.go index f3f5c2f..04b5a43 100644 --- a/workers.go +++ b/workers.go @@ -109,7 +109,6 @@ func MQKeepAliveWorker() { c.Connection, err = amqp.Dial("amqp://" + c.User + ":" + c.Password + "@" + c.Host + "/" + c.Path) logOnError(err, "MQKeepAliveWorker : Cannot open MQ connection") if err != nil { - c.Connection.Close() time.Sleep(15 * time.Second) continue } @@ -162,9 +161,10 @@ func MQKeepAliveWorker() { err = json.Unmarshal(d.Body, &x) logOnError(err, "MQKeepAliveWorker : Can't unmarshal.\n"+string(d.Body)) if err == nil { + muxKeepAlive.Lock() if x.Date.Add(10 * time.Second).Before(time.Now()) { // outdated keep-alive coming from client - } else if v, ok := clientsKeepAlive.Load(x.UserID64); ok { + } else if v, ok := clientsKeepAlive.Load(x.TGUserID64); ok { k := v.(*MQKeepAlive) k.Date = x.Date } else { @@ -201,12 +201,12 @@ func MQKeepAliveWorker() { } } } - clientsKeepAlive.Store(x.UserID64, &x) - clientsQueue[x.UserID64] = &clt + clientsKeepAlive.Store(x.TGUserID64, &x) + clientsQueue[x.TGUserID64] = &clt c := TGCommand{ Type: commandSendMsg, - ToUserID64: x.UserID64, + ToUserID64: x.TGUserID64, Text: "Your client is connected.", } TGCmdQueue <- c @@ -219,7 +219,7 @@ func MQKeepAliveWorker() { clientSendCWMsg(x.UserID64, `🏅Me`) } - + muxKeepAlive.Unlock() } } c.Channel.Close()