diff --git a/client/handler.go b/client/handler.go index 3f46fd3..728b57b 100644 --- a/client/handler.go +++ b/client/handler.go @@ -11,7 +11,36 @@ import ( ) var ( - knownCMD = []string{"INTERACT_WORD", "HOT_RANK_SETTLEMENT", "DANMU_GIFT_LOTTERY_START", "WELCOME_GUARD", "PK_PROCESS", "PK_BATTLE_PRO_TYPE", "MATCH_TEAM_GIFT_RANK", "PK_BATTLE_CRIT", "LUCK_GIFT_AWARD_USER", "SCORE_CARD", "ONLINE_RANK_V2", "PK_BATTLE_SPECIAL_GIFT", "SEND_TOP", "SUPER_CHAT_MESSAGE_JPN", "ANIMATION", "GUARD_LOTTERY_START", "WEEK_STAR_CLOCK", "WELCOME", "WIN_ACTIVITY", "ROOM_KICKOUT", "CHANGE_ROOM_INFO", "ROOM_SKIN_MSG", "ROOM_BLOCK_MSG", "SUPER_CHAT_ENTRANCE", "PK_BATTLE_RANK_CHANGE", "ROOM_LOCK", "TV_END", "PK_PRE", "ROOM_SILENT_OFF", "SEND_GIFT", "DANMU_MSG", "ANCHOR_LOT_START", "ROOM_BOX_USER", "ONLINE_RANK_TOP3", "WIDGET_BANNER", "PK_BATTLE_START", "ACTIVITY_MATCH_GIFT", "PK_AGAIN", "PK_MATCH", "RAFFLE_START", "LIVE", "WISH_BOTTLE", "GUARD_ACHIEVEMENT_ROOM", "ONLINE_RANK_COUNT", "COMMON_NOTICE_DANMAKU", "LOL_ACTIVITY", "HOT_RANK_CHANGED", "ROOM_BLOCK_INTO", "ROOM_LIMIT", "PANEL", "RAFFLE_END", "ENTRY_EFFECT", "STOP_LIVE_ROOM_LIST", "TV_START", "WATCH_LPL_EXPIRED", "PK_BATTLE_PRE", "USER_TOAST_MSG", "BOX_ACTIVITY_START", "PK_MIC_END", "LIVE_INTERACTIVE_GAME", "ROOM_BANNER", "PK_BATTLE_GIFT", "MESSAGEBOX_USER_GAIN_MEDAL", "LITTLE_TIPS", "HOUR_RANK_AWARDS", "NOTICE_MSG", "ROOM_REAL_TIME_MESSAGE_UPDATE", "ANCHOR_LOT_END", "PREPARING", "GUARD_BUY", "ROOM_CHANGE", "room_admin_entrance", "CHASE_FRAME_SWITCH", "DANMU_GIFT_LOTTERY_AWARD", "PK_BATTLE_VOTES_ADD", "PK_BATTLE_END", "CUT_OFF", "PK_BATTLE_PROCESS", "PK_BATTLE_SETTLE_USER", "ANCHOR_LOT_AWARD", "WIN_ACTIVITY_USER", "VOICE_JOIN_STATUS", "DANMU_GIFT_LOTTERY_END", "ROOM_RANK", "SUPER_CHAT_MESSAGE", "ACTIVITY_BANNER_UPDATE_V2", "SPECIAL_GIFT", "ROOM_SILENT_ON", "WARNING", "ROOM_ADMINS", "COMBO_SEND", "HOT_RANK_SETTLEMENT_V2", "ANCHOR_LOT_CHECKSTATUS", "HOT_RANK_CHANGED_V2", "SUPER_CHAT_MESSAGE_DELETE", "PK_END", "PK_SETTLE", "ROOM_REFRESH", "PK_START", "COMBO_END", "PK_LOTTERY_START", "GUARD_WINDOWS_OPEN", "REENTER_LIVE_ROOM", "MESSAGEBOX_USER_MEDAL_CHANGE", "MESSAGEBOX_USER_MEDAL_COMPENSATION", "LITTLE_MESSAGE_BOX", "PK_BATTLE_PRE_NEW", "PK_BATTLE_START_NEW", "PK_BATTLE_PROCESS_NEW", "PK_BATTLE_FINAL_PROCESS", "PK_BATTLE_SETTLE_V2", "PK_BATTLE_SETTLE_NEW", "PK_BATTLE_PUNISH_END", "PK_BATTLE_VIDEO_PUNISH_BEGIN", "PK_BATTLE_VIDEO_PUNISH_END", "ENTRY_EFFECT_MUST_RECEIVE", "SUPER_CHAT_AUDIT", "VIDEO_CONNECTION_JOIN_START", "VIDEO_CONNECTION_JOIN_END", "VIDEO_CONNECTION_MSG", "VTR_GIFT_LOTTERY", "RED_POCKET_START", "FULL_SCREEN_SPECIAL_EFFECT", "POPULARITY_RED_POCKET_START", "POPULARITY_RED_POCKET_WINNER_LIST", "USER_PANEL_RED_ALARM", "SHOPPING_CART_SHOW", "THERMAL_STORM_DANMU_BEGIN", "THERMAL_STORM_DANMU_UPDATE", "THERMAL_STORM_DANMU_CANCEL", "THERMAL_STORM_DANMU_OVER", "MILESTONE_UPDATE_EVENT", "WEB_REPORT_CONTROL", "DANMU_TAG_CHANGE", "RANK_REM", "LIVE_PLAYER_LOG_RECYCLE", "LIVE_INTERNAL_ROOM_LOGIN", "LIVE_OPEN_PLATFORM_GAME", "WATCHED_CHANGE", "DANMU_AGGREGATION", "POPULARITY_RED_POCKET_NEW", "LIKE_INFO_V3_CLICK", "POPULAR_RANK_CHANGED", "DM_INTERACTION", "LIKE_INFO_V3_UPDATE", "HOT_ROOM_NOTIFY", "PLAY_TAG", "OTHER_SLICE_LOADING_RESULT"} + knownCMD = []string{ + "INTERACT_WORD", "HOT_RANK_SETTLEMENT", "DANMU_GIFT_LOTTERY_START", "WELCOME_GUARD", + "PK_PROCESS", "PK_BATTLE_PRO_TYPE", "MATCH_TEAM_GIFT_RANK", "PK_BATTLE_CRIT", "LUCK_GIFT_AWARD_USER", + "SCORE_CARD", "ONLINE_RANK_V2", "PK_BATTLE_SPECIAL_GIFT", "SEND_TOP", "SUPER_CHAT_MESSAGE_JPN", "ANIMATION", + "GUARD_LOTTERY_START", "WEEK_STAR_CLOCK", "WELCOME", "WIN_ACTIVITY", "ROOM_KICKOUT", "CHANGE_ROOM_INFO", + "ROOM_SKIN_MSG", "ROOM_BLOCK_MSG", "SUPER_CHAT_ENTRANCE", "PK_BATTLE_RANK_CHANGE", "ROOM_LOCK", "TV_END", + "PK_PRE", "ROOM_SILENT_OFF", "SEND_GIFT", "DANMU_MSG", "ANCHOR_LOT_START", "ROOM_BOX_USER", "ONLINE_RANK_TOP3", + "WIDGET_BANNER", "PK_BATTLE_START", "ACTIVITY_MATCH_GIFT", "PK_AGAIN", "PK_MATCH", "RAFFLE_START", + "LIVE", "WISH_BOTTLE", "GUARD_ACHIEVEMENT_ROOM", "ONLINE_RANK_COUNT", "COMMON_NOTICE_DANMAKU", "LOL_ACTIVITY", + "HOT_RANK_CHANGED", "ROOM_BLOCK_INTO", "ROOM_LIMIT", "PANEL", "RAFFLE_END", "ENTRY_EFFECT", "STOP_LIVE_ROOM_LIST", + "TV_START", "WATCH_LPL_EXPIRED", "PK_BATTLE_PRE", "USER_TOAST_MSG", "BOX_ACTIVITY_START", "PK_MIC_END", + "LIVE_INTERACTIVE_GAME", "ROOM_BANNER", "PK_BATTLE_GIFT", "MESSAGEBOX_USER_GAIN_MEDAL", "LITTLE_TIPS", + "HOUR_RANK_AWARDS", "NOTICE_MSG", "ROOM_REAL_TIME_MESSAGE_UPDATE", "ANCHOR_LOT_END", "PREPARING", "GUARD_BUY", + "ROOM_CHANGE", "room_admin_entrance", "CHASE_FRAME_SWITCH", "DANMU_GIFT_LOTTERY_AWARD", "PK_BATTLE_VOTES_ADD", + "PK_BATTLE_END", "CUT_OFF", "PK_BATTLE_PROCESS", "PK_BATTLE_SETTLE_USER", "ANCHOR_LOT_AWARD", + "WIN_ACTIVITY_USER", "VOICE_JOIN_STATUS", "DANMU_GIFT_LOTTERY_END", "ROOM_RANK", "SUPER_CHAT_MESSAGE", + "ACTIVITY_BANNER_UPDATE_V2", "SPECIAL_GIFT", "ROOM_SILENT_ON", "WARNING", "ROOM_ADMINS", "COMBO_SEND", + "HOT_RANK_SETTLEMENT_V2", "ANCHOR_LOT_CHECKSTATUS", "HOT_RANK_CHANGED_V2", "SUPER_CHAT_MESSAGE_DELETE", + "PK_END", "PK_SETTLE", "ROOM_REFRESH", "PK_START", "COMBO_END", "PK_LOTTERY_START", "GUARD_WINDOWS_OPEN", + "REENTER_LIVE_ROOM", "MESSAGEBOX_USER_MEDAL_CHANGE", "MESSAGEBOX_USER_MEDAL_COMPENSATION", "LITTLE_MESSAGE_BOX", + "PK_BATTLE_PRE_NEW", "PK_BATTLE_START_NEW", "PK_BATTLE_PROCESS_NEW", "PK_BATTLE_FINAL_PROCESS", "PK_BATTLE_SETTLE_V2", + "PK_BATTLE_SETTLE_NEW", "PK_BATTLE_PUNISH_END", "PK_BATTLE_VIDEO_PUNISH_BEGIN", "PK_BATTLE_VIDEO_PUNISH_END", + "ENTRY_EFFECT_MUST_RECEIVE", "SUPER_CHAT_AUDIT", "VIDEO_CONNECTION_JOIN_START", "VIDEO_CONNECTION_JOIN_END", + "VIDEO_CONNECTION_MSG", "VTR_GIFT_LOTTERY", "RED_POCKET_START", "FULL_SCREEN_SPECIAL_EFFECT", + "POPULARITY_RED_POCKET_START", "POPULARITY_RED_POCKET_WINNER_LIST", "USER_PANEL_RED_ALARM", + "SHOPPING_CART_SHOW", "THERMAL_STORM_DANMU_BEGIN", "THERMAL_STORM_DANMU_UPDATE", "THERMAL_STORM_DANMU_CANCEL", + "THERMAL_STORM_DANMU_OVER", "MILESTONE_UPDATE_EVENT", "WEB_REPORT_CONTROL", "DANMU_TAG_CHANGE", "RANK_REM", + "LIVE_PLAYER_LOG_RECYCLE", "LIVE_INTERNAL_ROOM_LOGIN", "LIVE_OPEN_PLATFORM_GAME", "WATCHED_CHANGE", + "DANMU_AGGREGATION", "POPULARITY_RED_POCKET_NEW", "LIKE_INFO_V3_CLICK", "POPULAR_RANK_CHANGED", + "DM_INTERACTION", "LIKE_INFO_V3_UPDATE", "HOT_ROOM_NOTIFY", "PLAY_TAG", "OTHER_SLICE_LOADING_RESULT"} knownCMDMap map[string]int cmdReg = regexp.MustCompile(`"cmd":"([^"]+)"`) ) @@ -145,6 +174,7 @@ func (c *Client) Handle(p packet.Packet) { go cover(func() { fn(u) }) } default: + //log.Debugf("cmd: %s", cmd) if _, ok := knownCMDMap[cmd]; ok { return } diff --git a/message/interactword.go b/message/interactword.go new file mode 100644 index 0000000..fe15c71 --- /dev/null +++ b/message/interactword.go @@ -0,0 +1,102 @@ +package message + +type InteractWord struct { + Contribution struct { + Grade int `json:"grade"` + } `json:"contribution"` + ContributionV2 struct { + Grade int `json:"grade"` + RankType string `json:"rank_type"` + Text string `json:"text"` + } `json:"contribution_v2"` + ControlInfo struct { + Text string `json:"text"` + TextColor string `json:"text_color"` + Type int `json:"type"` + } `json:"control_info"` + CoreUserType int `json:"core_user_type"` + Dmscore int `json:"dmscore"` + FansMedal struct { + AnchorRoomid int `json:"anchor_roomid"` + GuardLevel int `json:"guard_level"` + IconId int `json:"icon_id"` + IsLighted int `json:"is_lighted"` + MedalColor int `json:"medal_color"` + MedalColorBorder int `json:"medal_color_border"` + MedalColorEnd int `json:"medal_color_end"` + MedalColorStart int `json:"medal_color_start"` + MedalLevel int `json:"medal_level"` + MedalName string `json:"medal_name"` + Score int `json:"score"` + Special string `json:"special"` + TargetId int `json:"target_id"` + } `json:"fans_medal"` + GroupMedal interface{} `json:"group_medal"` + Identities []int `json:"identities"` + IsMystery bool `json:"is_mystery"` + IsSpread int `json:"is_spread"` + MsgType int `json:"msg_type"` // MsgType {1: '进入', 2: '关注了', 3: '分享了', 4: '特别关注了', 5: '互粉了', 6: '为主播点赞了'} + PrivilegeType int `json:"privilege_type"` + RelationTail struct { + TailGuideText string `json:"tail_guide_text"` + TailIcon string `json:"tail_icon"` + TailType int `json:"tail_type"` + } `json:"relation_tail"` + Roomid int `json:"roomid"` + Score int64 `json:"score"` + SpreadDesc string `json:"spread_desc"` + SpreadInfo string `json:"spread_info"` + TailIcon int `json:"tail_icon"` + TailText string `json:"tail_text"` + Timestamp int `json:"timestamp"` + TriggerTime int64 `json:"trigger_time"` + Uid int `json:"uid"` + Uinfo struct { + Base struct { + Face string `json:"face"` + IsMystery bool `json:"is_mystery"` + Name string `json:"name"` + NameColor int `json:"name_color"` + NameColorStr string `json:"name_color_str"` + OfficialInfo interface{} `json:"official_info"` + OriginInfo interface{} `json:"origin_info"` + RiskCtrlInfo interface{} `json:"risk_ctrl_info"` + } `json:"base"` + Guard struct { + ExpiredStr string `json:"expired_str"` + Level int `json:"level"` + } `json:"guard"` + GuardLeader interface{} `json:"guard_leader"` + Medal struct { + Color int `json:"color"` + ColorBorder int `json:"color_border"` + ColorEnd int `json:"color_end"` + ColorStart int `json:"color_start"` + GuardIcon string `json:"guard_icon"` + GuardLevel int `json:"guard_level"` + HonorIcon string `json:"honor_icon"` + Id int `json:"id"` + IsLight int `json:"is_light"` + Level int `json:"level"` + Name string `json:"name"` + Ruid int `json:"ruid"` + Score int `json:"score"` + Typ int `json:"typ"` + UserReceiveCount int `json:"user_receive_count"` + V2MedalColorBorder string `json:"v2_medal_color_border"` + V2MedalColorEnd string `json:"v2_medal_color_end"` + V2MedalColorLevel string `json:"v2_medal_color_level"` + V2MedalColorStart string `json:"v2_medal_color_start"` + V2MedalColorText string `json:"v2_medal_color_text"` + } `json:"medal"` + Title interface{} `json:"title"` + UheadFrame interface{} `json:"uhead_frame"` + Uid int `json:"uid"` + Wealth struct { + DmIconKey string `json:"dm_icon_key"` + Level int `json:"level"` + } `json:"wealth"` + } `json:"uinfo"` + Uname string `json:"uname"` + UnameColor string `json:"uname_color"` +} diff --git a/message/utils.go b/message/utils.go index 9d2122e..0609d17 100644 --- a/message/utils.go +++ b/message/utils.go @@ -69,41 +69,6 @@ type HotRankSettlementV2 struct { DmMsg string `json:"dm_msg"` } -type InteractWord struct { - Contribution struct { - Grade int `json:"grade"` - } `json:"contribution"` - Dmscore int `json:"dmscore"` - FansMedal struct { - AnchorRoomid int `json:"anchor_roomid"` - GuardLevel int `json:"guard_level"` - IconId int `json:"icon_id"` - IsLighted int `json:"is_lighted"` - MedalColor int `json:"medal_color"` - MedalColorBorder int `json:"medal_color_border"` - MedalColorEnd int `json:"medal_color_end"` - MedalColorStart int `json:"medal_color_start"` - MedalLevel int `json:"medal_level"` - MedalName string `json:"medal_name"` - Score int `json:"score"` - Special string `json:"special"` - TargetId int `json:"target_id"` - } `json:"fans_medal"` - Identities []int `json:"identities"` - IsSpread int `json:"is_spread"` - MsgType int `json:"msg_type"` - Roomid int `json:"roomid"` - Score int64 `json:"score"` - SpreadDesc string `json:"spread_desc"` - SpreadInfo string `json:"spread_info"` - TailIcon int `json:"tail_icon"` - Timestamp int `json:"timestamp"` - TriggerTime int64 `json:"trigger_time"` - Uid int `json:"uid"` - Uname string `json:"uname"` - UnameColor string `json:"uname_color"` -} - type OnlineRankCount struct { Count int `json:"count"` }