diff --git a/client/handler.go b/client/handler.go index 55514f3..67be6b3 100644 --- a/client/handler.go +++ b/client/handler.go @@ -11,7 +11,7 @@ import ( ) type eventHandlers struct { - danmukuMessageHandlers []func(*message.Danmuku) + danmukuMessageHandlers []func(*message.Danmaku) superChatHandlers []func(*message.SuperChat) giftHandlers []func(*message.Gift) guardBuyHandlers []func(*message.GuardBuy) @@ -24,7 +24,7 @@ func (c *Client) RegisterCustomEventHandler(cmd string, handler func(s string)) (*c.customEventHandlers)[cmd] = handler } -func (c *Client) OnDanmuku(f func(*message.Danmuku)) { +func (c *Client) OnDanmuku(f func(*message.Danmaku)) { c.eventHandlers.danmukuMessageHandlers = append(c.eventHandlers.danmukuMessageHandlers, f) } @@ -57,7 +57,7 @@ func (c *Client) Handle(p packet.Packet) { } switch cmd { case "DANMU_MSG": - d := new(message.Danmuku) + d := new(message.Danmaku) d.Parse(p.Body) for _, fn := range c.eventHandlers.danmukuMessageHandlers { go cover(func() { fn(d) }) diff --git a/message/danmu.go b/message/danmu.go index 13dbca0..e452bad 100644 --- a/message/danmu.go +++ b/message/danmu.go @@ -7,10 +7,11 @@ import ( "github.com/tidwall/gjson" ) -type Danmuku struct { - Sender User - Content string - Extra Extra +type Danmaku struct { + Sender User + Content string + Extra Extra + Timestamp int64 } type Extra struct { @@ -30,7 +31,7 @@ type Extra struct { SpaceUrl string `json:"space_url"` } -func (d *Danmuku) Parse(data []byte) { +func (d *Danmaku) Parse(data []byte) { sb := bytes.NewBuffer(data).String() info := gjson.Get(sb, "info") d.Content = info.Get("1").String() @@ -49,4 +50,5 @@ func (d *Danmuku) Parse(data []byte) { log.Error("parse danmuku extra failed") } d.Extra = *ext + d.Timestamp = info.Get("0.4").Int() }