tccore

package module
v0.0.0-...-6f0fcee Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 17, 2026 License: MIT Imports: 38 Imported by: 0

README

Core for tbsign

Documentation

Index

Constants

View Source
const (
	ChatAppId      = 10773430
	ChatSdkVersion = 11250036
	ChatVersion    = "12.68.1.0" // ClientVersion->22...
	LcmSdkVersion  = "3460016"
	BlcpUserAgent  = "okhttp/3.11.0"
	BlcpPlatform   = "android"
)
View Source
const (
	SubappTypeHarmony        = "client_fe"
	SubappTypePC             = "pc"
	SubappTypeClient         = "client_fe"
	SubappTypeWise           = "newwise"
	SubappTypeShoubaiUgc     = "shoubai_ugc"
	SubappTypeSmallappBaidu  = "smallapp"
	SubappTypeSmallappWeixin = "smallapp_weixin"
	SubappTypeSmallappQq     = "smallapp_qq"

	ClientTypeHarmony = "8"
	ClientTypePC      = "20"
	ClientTypeAndroid = "2"
	ClientTypeIOS     = "1"

	// dead clients
	ClientTypeWindowsPhone = "3" // Windows Phone
	ClientTypeUWP          = "4" // Windows 8
)
View Source
const BrowserUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36"
View Source
const ClientUserAgent = "tieba/" + ClientVersion
View Source
const ClientVersion = "22.6.5.1"
View Source
const ClientWidgetUserAgent = "TiebaWidgets/" + ClientVersion + " CFNetwork/3826.500.131 Darwin/24.5.0"
View Source
const LegacyClientVersion = "12.64.1.1"
View Source
const MaxBLCPPacketSize = 16 * 1024 * 1024

Variables

View Source
var BB64Alphabet = []byte("qogjOuCRNkfil5p4SQ3LAmxGKZTdesvB6z_YPahMI9t80rJyHW1DEwFbc7nUVX2-")

bb64 by chatgpt && jetbrains ai

View Source
var BlcpMagic = []byte{'l', 'c', 'p', 1}
View Source
var CACertPool *x509.CertPool
View Source
var ClientSignSalt = string([]byte{116, 105, 101, 98, 97, 99, 108, 105, 101, 110, 116, 33, 33, 33})
View Source
var ClientTypeKV = map[string]string{
	"harmony": ClientTypeHarmony,
	"pc":      ClientTypePC,
	"android": ClientTypeAndroid,
	"ios":     ClientTypeIOS,
	"wp":      ClientTypeWindowsPhone,
	"uwp":     ClientTypeUWP,
}
View Source
var DefaultClient = new(http.Client)
View Source
var EmptyHeaders = make(map[string]string)
View Source
var IgnoreProxy bool
View Source
var MiniAppSignSalt = string([]byte{48, 48, 51, 57, 100, 55, 57, 100, 99, 51, 99, 99, 50, 48, 55, 53, 49, 50, 57, 55, 52, 53, 97, 51, 48, 50, 51, 55, 97, 51, 99, 52})

['newwise','shoubai_ugc','smallapp','smallapp_weixin','smallapp_qq']

View Source
var PCSignSalt = string([]byte{51, 54, 55, 55, 48, 98, 49, 102, 51, 52, 99, 57, 98, 98, 102, 50, 101, 55, 100, 49, 97, 57, 57, 100, 50, 98, 56, 50, 102, 97, 57, 101})
View Source
var TestMode bool

Functions

func AddSign

func AddSign(form map[string]string, subappType string)

func Base64URLDecode

func Base64URLDecode(originalBuffer string) ([]byte, error)

func Base64URLEncode

func Base64URLEncode(originalBuffer []byte) string

func BlcpHTTPClientSign

func BlcpHTTPClientSign(form map[string]any)

func BoolToTinyInt

func BoolToTinyInt(b bool) int

func ClientTypeFallBack

func ClientTypeFallBack(form map[string]string, clientTypeKey string)

func EncodeInPlace

func EncodeInPlace(buffer []byte, inputLength int, mode int) int

func EncodeTriplet

func EncodeTriplet(mp []byte, input []byte, destination []byte, destinationIndex int)

func EnuidEncode

func EnuidEncode(cuidGalaxy2 string) (string, error)

func Fetch

func Fetch(_url string, _method string, _body []byte, _headers map[string]string, client *http.Client) ([]byte, error)

func GetBDUKfromUserId

func GetBDUKfromUserId(userID string) (string, error)

func GzipDecode

func GzipDecode(data []byte) ([]byte, error)

func ImportCertPool

func ImportCertPool(caFile []byte) bool

func InitClient

func InitClient(timeout time.Duration, dns string) *http.Client

func Md5

func Md5(str string) string

func MultipartBodyBuilder

func MultipartBodyBuilder(_body map[string][]byte, files ...MultipartBodyBinaryFileType) ([]byte, string, error)

func ParseCookie

func ParseCookie(cookie string) map[string]string

by ChatGPT

func RandomTokenBuilder

func RandomTokenBuilder(n int64) ([]byte, error)

func Rc442

func Rc442(xyusMd5Str string, cbcSecKey []byte) []byte

Rc442 RC4加密变体,每字节额外XOR 42

func RemoveLeadingZeros

func RemoveLeadingZeros(data []byte) []byte

from chatgpt

func TinyIntToBool

func TinyIntToBool(t int) bool

func VPtr

func VPtr[T any](anyValue T) *T

func VariableWrapper

func VariableWrapper[T any](anyValue T) T

func When

func When[T any](c bool, d1, d2 T) T

func XorWords

func XorWords(state []int32, buffer []byte, length int)

Types

type AllLevelInfo

type AllLevelInfo struct {
	ID    string `json:"id,omitempty"`
	Name  string `json:"name,omitempty"`
	Score string `json:"score,omitempty"`
}

type BB64Table

type BB64Table struct {
	State []int32
	Map   []byte
}

func BuildTable

func BuildTable(mode int, fillLookup bool) BB64Table

type BLCPCore

type BLCPCore struct {
	Client    *Client
	Conn      net.Conn
	BLCPToken string
	TTL       time.Duration

	MessageChan     chan *BLCPWaitListContent
	PendingRequests *ttlcache.Cache[int64, chan *BLCPWaitListContent]
	NotifyCallback  func(*BLCPWaitListContent) error // <- NotifyCallback should use goroutine

	Ctx         context.Context
	CloseSignal chan struct{}

	LoginID int64

	State BlcpState
}

func NewBLCP

func NewBLCP(ctx context.Context, client *Client) *BLCPCore

func (*BLCPCore) Connect

func (b *BLCPCore) Connect() error

func (*BLCPCore) EnterChatroomClient

func (b *BLCPCore) EnterChatroomClient(roomID, accountType int) (*EnterChatroomClientResponse, error)

func (*BLCPCore) ExitChatroomClient

func (b *BLCPCore) ExitChatroomClient(roomID int) (*ExitChatroomClientResponse, error)

func (*BLCPCore) FetchMcastMsgClient

func (b *BLCPCore) FetchMcastMsgClient(roomID, accountType, count int, cursor int64) (*FetchMcastMsgClientResponse, error)

default count=30

func (*BLCPCore) GenerateLcmToken

func (b *BLCPCore) GenerateLcmToken() (*GenerateLcmTokenResponse, error)

func (*BLCPCore) GetChatRoomDetail

func (b *BLCPCore) GetChatRoomDetail(chatroomID int) (*GetChatRoomDetailResponse, error)

func (*BLCPCore) GetRoomListByFid

func (b *BLCPCore) GetRoomListByFid(fid int) (*GetRoomListByFidResponse, error)

func (*BLCPCore) GroupChat

func (b *BLCPCore) GroupChat() (any, error)

?idk

func (*BLCPCore) GroupChatV1

func (b *BLCPCore) GroupChatV1() (any, error)

?idk

func (*BLCPCore) JoinChatRoom

func (b *BLCPCore) JoinChatRoom(chatroomID int) error

JoinChatRoom why we need this?

func (*BLCPCore) Login

func (b *BLCPCore) Login() error

func (*BLCPCore) MsgKey

func (b *BLCPCore) MsgKey(bduk string) string

func (*BLCPCore) ParseBLCPResponse

func (b *BLCPCore) ParseBLCPResponse(receivedBytes []byte) (*BLCPWaitListContent, error)

parsePacket will provide full data TODO bytes -> struct -> bytes

func (*BLCPCore) QuitChatRoom

func (b *BLCPCore) QuitChatRoom(chatroomID int) error

QuitChatRoom is not work at all!!! methodId=202

func (*BLCPCore) SendChatroomMessage

func (b *BLCPCore) SendChatroomMessage(chatroomID int, text string, isVIP bool, forumLevel, growthLevel, fid, robot int, atData []ChatroomMessageAtData) (*BLCPWaitListContent, error)

default robot=-1

func (*BLCPCore) SyncSend

func (b *BLCPCore) SyncSend(key int64, payload []byte) (*BLCPWaitListContent, error)

func (*BLCPCore) SyncSendBLCPData

func (b *BLCPCore) SyncSendBLCPData(data *BLCPData) (*BLCPWaitListContent, error)

type BLCPData

type BLCPData struct {
	RpcBody []byte
	LcmBody []byte
	// contains filtered or unexported fields
}

func NewBLCPData

func NewBLCPData(serviceId, methodId int64) *BLCPData

func NewBLCPDataWithOption

func NewBLCPDataWithOption(serviceId, methodId int64, rpcBody, lcmBody []byte, timestamp int64, ifRequest, isNotify bool) *BLCPData

type BLCPNotify

type BLCPNotify struct {
	Appid     int `json:"appid"`
	EventList []struct {
		Event       string `json:"event"`
		TimestampMs int    `json:"timestamp_ms"`
	} `json:"event_list"`
	McastID   int `json:"mcast_id"`
	McastType int `json:"mcast_type"`
	Messages  []struct {
		Category   int    `json:"category"`
		Contacter  int    `json:"contacter"`
		Content    string `json:"content"`
		CreateTime int    `json:"create_time"`
		FromUser   int    `json:"from_user"`
		IsRead     int    `json:"is_read"`
		McastID    int    `json:"mcast_id"`
		MsgKey     string `json:"msg_key"`
		Msgid      int    `json:"msgid"`
		OriginID   int    `json:"origin_id,omitempty"`
		Priority   int    `json:"priority"`
		Type       int    `json:"type"`
	} `json:"messages"`
	Method   int `json:"method"`
	NotifyID int `json:"notify_id"`
}

type BLCPWaitListContent

type BLCPWaitListContent struct {
	IsNotify      bool
	IsHeartBeat   bool
	BLCPData      *BLCPData
	RPC           *tbpb.RpcMeta
	LCMType       string // protobuf/json/notify(gzipped json)
	GzipLCM       bool   // <- for debug
	ProtoLCM      *tbpb.RpcData
	JsonLCM       map[string]any
	NotifyLCM     *BLCPNotify
	CorrelationId int
}

type BaiduUserInfoResponse

type BaiduUserInfoResponse struct {
	User struct {
		ID       string `json:"id,omitempty"`
		Name     string `json:"name,omitempty"`
		BDUSS    string `json:"BDUSS,omitempty"`
		Portrait string `json:"portrait,omitempty"`
	} `json:"user"`
	Anti struct {
		Tbs string `json:"tbs,omitempty"`
	} `json:"anti,omitempty"`
	ErrorCode string `json:"error_code,omitempty"`
	ErrorMsg  string `json:"error_msg,omitempty"`
}

type BatchCheckinActionResponse

type BatchCheckinActionResponse struct {
	Info json.RawMessage `json:"info"`

	ShowDialog    string `json:"show_dialog"`
	SignNotice    string `json:"sign_notice"`
	IsTimeout     string `json:"is_timeout"`
	TimeoutNotice string `json:"timeout_notice"`
	Error         struct {
		Errno   string `json:"errno"` // 同上,不过这个是总的
		Errmsg  string `json:"errmsg"`
		Usermsg string `json:"usermsg"`
	} `json:"error"`

	ErrorCode string `json:"error_code"` // should be "0" without system error
	ErrorMsg  string `json:"error_msg"`
}

type BatchCheckinActionResponseForumListItem

type BatchCheckinActionResponseForumListItem struct {
	ForumID      string `json:"forum_id"`
	ForumName    string `json:"forum_name"`
	Signed       string `json:"signed"`
	IsOn         string `json:"is_on"`
	IsFilter     string `json:"is_filter"`
	SignDayCount string `json:"sign_day_count"`
	CurScore     string `json:"cur_score"`
	Error        struct {
		ErrNo   string `json:"err_no"`  // "2280001"
		Usermsg string `json:"usermsg"` // "this user is in the blacklist of this forum"
		Errmsg  string `json:"errmsg"`  // "您尚在黑名单中,不能操作。"
	} `json:"error"`
}

type BatchCheckinForumListResponse

type BatchCheckinForumListResponse struct {
	ErrorCode string `json:"error_code"` // "0" means no problem
	ErrorMsg  string `json:"error_msg"`

	// Error struct {
	// 	Errno   string `json:"errno"`
	// 	Errmsg  string `json:"errmsg"`
	// 	Usermsg string `json:"usermsg"`
	// } `json:"error"`
	ForumInfo []*struct {
		ForumID   string `json:"forum_id"`
		ForumName string `json:"forum_name"`
		// UserLevel     string `json:"user_level"`
		// UserExp       string `json:"user_exp"`
		// NeedExp       string `json:"need_exp"`
		IsSignIn string `json:"is_sign_in"`
	} `json:"forum_info"`
	// User struct {
	// 	PayMemberInfo struct {
	// 		PropsID string `json:"props_id"`
	// 		EndTime string `json:"end_time"`
	// 		PicURL  string `json:"pic_url"`
	// 	} `json:"pay_member_info"`
	// 	VipInfo struct {
	// 		CrownText      string `json:"crown_text"`
	// 		SignButtonText string `json:"sign_button_text"`
	// 		VipIconURL     string `json:"vip_icon_url"`
	// 	} `json:"vipInfo"`
	// 	TiebaUID   string `json:"tieba_uid"`
	// 	UnsignInfo []struct {
	// 		Level string `json:"level"`
	// 		Num   string `json:"num"`
	// 	} `json:"unsign_info"`
	// } `json:"user"`
	// CanUse string `json:"can_use"`
	// ButtonContent string `json:"button_content"`
	// Content       string `json:"content"`
	ShowDialog string `json:"show_dialog"`
	SignNotice string `json:"sign_notice"`
	// Title         string `json:"title"`
	// TextPre       string `json:"text_pre"`
	// TextColor     string `json:"text_color"`
	// TextMid       string `json:"text_mid"`
	// TextSuf       string `json:"text_suf"`
	// NumNotice     string `json:"num_notice"`
	Level         string `json:"level"`
	SignMaxNum    string `json:"sign_max_num"`
	Valid         string `json:"valid"`
	MsignStepNum  string `json:"msign_step_num"`
	SignNew       string `json:"sign_new"`
	SignMaxNumNew string `json:"sign_max_num_new"`
	TodayExp      string `json:"today_exp"`
}

type BawuTask

type BawuTask struct {
	EndTime  int `json:"end_time,omitempty"`
	TaskList []struct {
		TaskName   string `json:"task_name,omitempty"`
		TaskStatus string `json:"task_status,omitempty"`
	} `json:"task_list,omitempty"`
}

type BlcpState

type BlcpState int
const (
	BLCPStateDisconnected BlcpState = iota - 1
	BLCPStateConnected
	BLCPStateLoggedIn
)

type ChatroomMessageAtData

type ChatroomMessageAtData struct {
	AtType          string `json:"at_type"`
	AtBaiduUk       string `json:"at_baidu_uk"`
	AtName          string `json:"at_name"`
	AtVip           string `json:"at_vip,omitempty"`
	AtCharacter     string `json:"at_character,omitempty"`
	AtCharacterName string `json:"at_character_name,omitempty"`
	AtPortrait      string `json:"at_portrait"`
	Position        int    `json:"position"`
}

type Client

type Client struct {
	Account *TypeCookie

	// for client
	AndroidID string
	UUID      string

	HttpClient *http.Client

	ClientID string
	SampleID string

	Zid string
	// contains filtered or unexported fields
}

func NewClient

func NewClient(cookie *TypeCookie) *Client

func (*Client) AESCBCCipher

func (tc *Client) AESCBCCipher() (cipher.Block, error)

func (*Client) AESCBCSecKey

func (tc *Client) AESCBCSecKey() ([]byte, error)

func (*Client) AESECBCipher

func (tc *Client) AESECBCipher() (cipher.Block, error)

func (*Client) AESECBSecKey

func (tc *Client) AESECBSecKey() ([]byte, error)

func (*Client) C3Aid

func (tc *Client) C3Aid() (string, error)

C3Aid generates CUID 3 AID from device identifiers

func (*Client) Cuid

func (tc *Client) Cuid() string

Cuid only for legacy versions like 9.x, >= 11.x use cuid_galaxy2

func (*Client) CuidGalaxy2

func (tc *Client) CuidGalaxy2() (string, error)

CuidGalaxy2 generates CUID Galaxy 2 from device identifiers

func (*Client) GetAllForums

func (tc *Client) GetAllForums() (map[int]ForumStatus, error)

func (*Client) GetBaiduUserInfo

func (tc *Client) GetBaiduUserInfo() (*BaiduUserInfoResponse, error)

func (*Client) GetForumDetail

func (tc *Client) GetForumDetail(fid int64) (*tbpb.GetForumDetailResIdl_DataRes, error)

func (*Client) GetForumList

func (tc *Client) GetForumList(uid string, page int64) (*ForumListResponse[*ForumList], error)

func (*Client) GetForumList2

func (tc *Client) GetForumList2(page int64) (*ForumGuideResponse, error)

func (*Client) GetForumNameShare

func (tc *Client) GetForumNameShare(name string) (*ForumNameShareResponse, error)

func (*Client) GetLoginQRCode

func (tc *Client) GetLoginQRCode() (*LoginQRCode, error)

func (*Client) GetLoginResponse

func (tc *Client) GetLoginResponse(tmpBDUSS string) (*LoginResponse, error)

func (*Client) GetManagerInfo

func (tc *Client) GetManagerInfo(fid uint64) (*tbpb.GetBawuInfoResIdl_DataRes, error)

func (*Client) GetManagerStatus

func (tc *Client) GetManagerStatus(portrait string, fid int64) (*IsManagerPreCheckResponse, error)

func (*Client) GetManagerTasks

func (tc *Client) GetManagerTasks(fid int64) (*ManagerTasksResponse, error)

func (*Client) GetMobileWebIndexWithUser

func (tc *Client) GetMobileWebIndexWithUser() (*UserInfoIncludedShortTbsResponse, error)

func (*Client) GetNewPCForumCard

func (tc *Client) GetNewPCForumCard(fid int) (*GetNewPCForumCardResponse, error)

func (*Client) GetNewPCUserCard

func (tc *Client) GetNewPCUserCard(portrait string) (*GetNewPCUserCardResponse, error)

func (*Client) GetPrivateInfo

func (tc *Client) GetPrivateInfo(uid uint64) (*tbpb.GetPrivateInfoResIdl_ResData, error)

GetPrivateInfo uid=0 is ok

func (*Client) GetTbs

func (tc *Client) GetTbs() (*TbsResponse, error)

func (*Client) GetUnicastResponse

func (tc *Client) GetUnicastResponse(sign string) (*WrapUnicastResponse, error)

func (*Client) GetUserInfoByTiebaUID

func (tc *Client) GetUserInfoByTiebaUID(tbuid string) (*tbpb.GetUserByTiebaUidResIdl_DataRes, error)

func (*Client) GetUserInfoByUsernameOrPortrait

func (tc *Client) GetUserInfoByUsernameOrPortrait(requestType string, value string) (*TiebaPanelUserInfoResponse, error)

func (*Client) GetWebForumList

func (tc *Client) GetWebForumList(page int64) (*WebForumListResponse, error)

func (*Client) PostCheckinClient

func (tc *Client) PostCheckinClient(kw string, fid int32) (*ClientSignResponse, error)

func (*Client) PostClientBatchCheckin

func (tc *Client) PostClientBatchCheckin(fid []string) (*BatchCheckinActionResponse, error)

func (*Client) PostClientBatchCheckinForumList

func (tc *Client) PostClientBatchCheckinForumList() (*BatchCheckinForumListResponse, error)

func (*Client) PostForumInfoWidget

func (tc *Client) PostForumInfoWidget(fid int32) (any, error)

func (*Client) PostSync

func (tc *Client) PostSync() (*PostSyncResponse, error)

!!! Calling this api will change the IP location !!!

func (*Client) RandomAndroidID

func (tc *Client) RandomAndroidID() string

func (*Client) RandomUUID

func (tc *Client) RandomUUID() string

func (*Client) ShortTbs

func (tc *Client) ShortTbs() string

func (*Client) SyncZid

func (tc *Client) SyncZid() (string, error)

func (*Client) Tbs

func (tc *Client) Tbs() string

type ClientSignResponse

type ClientSignResponse struct {
	UserInfo UserInfo `json:"user_info,omitempty"`
	// ContriInfo []any    `json:"contri_info,omitempty"`
	// ServerTime string   `json:"server_time,omitempty"`
	// Time       int      `json:"time,omitempty"`
	// Ctime      int      `json:"ctime,omitempty"`
	// Logid      int      `json:"logid,omitempty"`
	ErrorCode string `json:"error_code,omitempty"`
	ErrorMsg  string `json:"error_msg,omitempty"`
}

type EnterChatroomClientResponse

type EnterChatroomClientResponse struct {
	RequestID int    `json:"request_id"`
	ErrorCode int    `json:"error_code"`
	ErrorMsg  string `json:"error_msg"`
	// TraceLocation string `json:"trace_location"`
	RoomID  int    `json:"room_id"`
	BaiduUK string `json:"baidu_uk"`

	RoomInfo struct {
		Appid       int    `json:"appid"`
		RoomID      int    `json:"room_id"`
		ChatMcastID int    `json:"chat_mcast_id"`
		RoomType    int    `json:"room_type"`
		RoomName    string `json:"room_name"`
		RoomImage   string `json:"room_image"`
		RoomNotice  string `json:"room_notice"`
		ResourceID  string `json:"resource_id"`
		Ext         string `json:"ext"`
		State       int    `json:"state"`
		UserCount   int    `json:"user_count"`
	} `json:"room_info"`
	UserInfo struct {
		Character     int    `json:"character"`
		CharacterName string `json:"character_name"`
		Vip           int    `json:"vip"`
	} `json:"user_info"`
}

type ExitChatroomClientResponse

type ExitChatroomClientResponse struct {
	RequestID int    `json:"request_id"`
	ErrorCode int    `json:"error_code"`
	ErrorMsg  string `json:"error_msg"`
}

type FetchMcastMsgClientResponse

type FetchMcastMsgClientResponse struct {
	// RequestID     int                                   `json:"request_id"`
	ErrCode int    `json:"err_code"`
	ErrMsg  string `json:"err_msg"`
	// TraceLocation string                                `json:"trace_location"`
	Messages  *[]FetchMcastMsgClientResponseMessage `json:"messages,omitempty"`
	HasMore   bool                                  `json:"has_more"`
	ErrorCode int                                   `json:"error_code"`
	ErrorMsg  string                                `json:"error_msg"`
}

type FetchMcastMsgClientResponseMessage

type FetchMcastMsgClientResponseMessage struct {
	Msgid         int64  `json:"msgid"`
	UserType      int    `json:"user_type"`
	ContacterType int    `json:"contacter_type"`
	ContacterUk   int    `json:"contacter_uk"`
	PaUID         int    `json:"pa_uid"`
	Contacter     int64  `json:"contacter"`
	FromUser      int64  `json:"from_user"`
	Category      int    `json:"category"`
	Content       string `json:"content"`
	CreateTime    int    `json:"create_time"`
	ToUser        int    `json:"to_user"`
	GroupID       int    `json:"group_id"`
	McastID       int64  `json:"mcast_id"`
	GroupMsgid    int    `json:"group_msgid"`
	IsRead        int    `json:"is_read"`
	Type          int    `json:"type"`
	Cmd           int    `json:"cmd"`
	OriginID      int    `json:"origin_id"`
	Appid         int    `json:"appid"`
	MsgKey        string `json:"msg_key"`
	MsgExpires    int    `json:"msg_expires"`
	BusinessType  int    `json:"business_type"`
}

type ForumGuideResponse

type ForumGuideResponse struct {
	ErrorMsg         string `json:"error_msg"`
	ErrorCode        int    `json:"error_code"`
	IsLogin          int    `json:"is_login"`
	LikeForumHasMore bool   `json:"like_forum_has_more"`
	LikeForum        []*struct {
		// HotNum      int    `json:"hot_num"`
		// SortValue   int    `json:"sort_value"`
		// LevelName   string `json:"level_name"`
		ForumName   string `json:"forum_name"`
		IsForbidden int    `json:"is_forbidden,omitempty"`
		// MemberCount int    `json:"member_count"`
		IsSign int `json:"is_sign"`
		// ThreadNum       int    `json:"thread_num"`
		// NeedTrans       bool   `json:"need_trans"`
		LevelID int `json:"level_id"`
		ForumID int `json:"forum_id"`
	} `json:"like_forum"`
}

type ForumInfo

type ForumInfo struct {
	ID           string `json:"id,omitempty"`
	Name         string `json:"name,omitempty"`
	FavoType     string `json:"favo_type,omitempty"`
	LevelID      string `json:"level_id,omitempty"`
	LevelName    string `json:"level_name,omitempty"`
	CurScore     string `json:"cur_score,omitempty"`
	LevelupScore string `json:"levelup_score,omitempty"`
	Avatar       string `json:"avatar,omitempty"`
	Slogan       string `json:"slogan,omitempty"`
}

type ForumList

type ForumList struct {
	NonGconforum []*ForumInfo `json:"non-gconforum,omitempty"`
	Gconforum    []*ForumInfo `json:"gconforum,omitempty"`
}

type ForumListResponse

type ForumListResponse[T any] struct {
	ForumList T      `json:"forum_list,omitempty"`
	HasMore   string `json:"has_more,omitempty"`
	// ServerTime string `json:"server_time,omitempty"`
	// Time       int    `json:"time,omitempty"`
	// Ctime      int    `json:"ctime,omitempty"`
	// Logid      int    `json:"logid,omitempty"`
	ErrorCode string `json:"error_code,omitempty"`
}

type ForumNameShareResponse

type ForumNameShareResponse struct {
	No    int    `json:"no,omitempty"`
	Error string `json:"error,omitempty"`
	Data  struct {
		Fid         int `json:"fid,omitempty"`
		CanSendPics int `json:"can_send_pics,omitempty"`
	} `json:"data,omitempty"`
}

type ForumStatus

type ForumStatus struct {
	Level int `json:"level"`
	// Score    int    `json:"score"`
	IsSigned bool   `json:"is_signed"`
	Name     string `json:"name"`
}

type GenerateLcmTokenResponse

type GenerateLcmTokenResponse struct {
	// RequestID string `json:"request_id"`
	ErrorCode string `json:"error_code"`
	ErrorMsg  string `json:"error_msg"`
	Token     string `json:"token"`
}

type GetChatRoomDetailResponse

type GetChatRoomDetailResponse struct {
	ErrorMsg  string `json:"error_msg"`
	ErrorCode string `json:"error_code"`

	Data struct {
		BasicInfo struct {
			ID         string `json:"id"`
			ForumID    string `json:"forum_id"`
			GroupID    string `json:"group_id"`
			Name       string `json:"name"`
			Avatar     string `json:"avatar"`
			IsDelete   string `json:"is_delete"`
			CreateTime string `json:"create_time"`
			DiscussNum string `json:"discuss_num"`
			ForumName  string `json:"forum_name"`
		} `json:"basic_info"`
		ExtraInfo struct {
			ChatroomID             string `json:"chatroom_id"`
			Weight                 string `json:"weight"`
			Announce               string `json:"announce"`
			TalkThresholdLevel     string `json:"talk_threshold_level"`
			ChatroomViewType       string `json:"chatroom_view_type"`
			ForumEntranceSwitch    string `json:"forum_entrance_switch"`
			ForumEntranceCloseType string `json:"forum_entrance_close_type"`
			IsFreezing             string `json:"is_freezing"`
			FreezingType           string `json:"freezing_type"`
			IsTalkBanned           string `json:"is_talk_banned"`
			AnnounceOpTime         string `json:"announce_op_time"`
			OpTime                 string `json:"op_time"`
			TalkType               string `json:"talk_type"`
		} `json:"extra_info"`
		UserInfo struct {
			IsCanViewChatroom string `json:"is_can_view_chatroom"`
			IsBeenTalkBanned  string `json:"is_been_talk_banned"`
			IsSubscription    string `json:"is_subscription"`
			IdentityRole      string `json:"identity_role"`
			ForumLevel        string `json:"forum_level"`
			UserGrowthLevel   string `json:"user_growth_level"`
			IsCanReaction     string `json:"is_can_reaction"`
			BazhuType         string `json:"bazhu_type"`
			BubbleInfo        struct {
				Type    string `json:"type"`
				ImgInfo struct {
					AndroidLeft      string `json:"android_left"`
					AndroidRight     string `json:"android_right"`
					IosLeft          string `json:"ios_left"`
					IosRight         string `json:"ios_right"`
					AndroidLeftDark  string `json:"android_left_dark"`
					AndroidRightDark string `json:"android_right_dark"`
					IosLeftDark      string `json:"ios_left_dark"`
					IosRightDark     string `json:"ios_right_dark"`
				} `json:"img_info"`
				EndTime   string `json:"end_time"`
				ColorInfo struct {
					TextColor       string `json:"text_color"`
					TextColorDark   string `json:"text_color_dark"`
					AtTextColor     string `json:"at_text_color"`
					AtTextColorDark string `json:"at_text_color_dark"`
				} `json:"color_info"`
				JumpURL string `json:"jump_url"`
				ID      string `json:"id"`
			} `json:"bubble_info"`
			MainData []struct {
				Type string `json:"type"`
				Text *struct {
					Str           string `json:"str"`
					Priority      string `json:"priority"`
					ShortEnable   string `json:"short_enable"`
					ShortLength   string `json:"short_length"`
					ShortPriority string `json:"short_priority"`
					Suffix        string `json:"suffix"`
					Type          string `json:"type"`
				} `json:"text,omitempty"`
				Icon *struct {
					URL      string `json:"url"`
					Width    string `json:"width"`
					Height   string `json:"height"`
					Priority string `json:"priority"`
					Type     string `json:"type"`
					Schema   string `json:"schema"`
				} `json:"icon,omitempty"`
			} `json:"main_data"`
		} `json:"user_info"`
		Bots struct {
			Guide   string `json:"guide"`
			BotList []struct {
				Scene   string `json:"scene"`
				Guide   string `json:"guide"`
				AtGuide string `json:"at_guide"`
				Skill   []struct {
					Type     string `json:"type"`
					Name     string `json:"name"`
					Alias    string `json:"alias"`
					Desc     string `json:"desc"`
					Exp      string `json:"exp"`
					Exec     string `json:"exec"`
					CallType string `json:"call_type"`
					Keyboard string `json:"keyboard"`
					Items    []struct {
						Name  string `json:"name"`
						Value string `json:"value"`
						Opts  []struct {
							Name    string `json:"name"`
							Default string `json:"default"`
						} `json:"opts"`
						Type string `json:"type"`
					} `json:"items"`
					Version struct {
						Ios     string `json:"ios"`
						Android string `json:"android"`
					} `json:"version"`
					IsShow string `json:"is_show"`
				} `json:"skill"`
				User struct {
					Name       string `json:"name"`
					Portrait   string `json:"portrait"`
					NameShow   string `json:"name_show"`
					Uk         string `json:"uk"`
					RobotRole  string `json:"robot_role"`
					ForumLevel string `json:"forum_level"`
				} `json:"user"`
			} `json:"bot_list"`
		} `json:"bots"`
		HasChated  string `json:"has_chated"`
		TextIsShow string `json:"text_is_show"`
		ShowText   string `json:"show_text"`
		MaskInfo   []struct {
			MaskID  string `json:"mask_id"`
			Content string `json:"content"`
		} `json:"mask_info"`
		Conf struct {
			ChatroomResourceMaxTimeDelay string `json:"chatroom_resource_max_time_delay"`
		} `json:"conf"`
	} `json:"data"`
}

type GetNewPCForumCardResponse

type GetNewPCForumCardResponse struct {
	// Ctime string `json:"ctime"`
	Data struct {
		Activityhead *struct {
			HeadImgs []struct {
				ImgURL string `json:"img_url"`
				Type   int    `json:"type"`
			} `json:"head_imgs"`
		} `json:"activityhead,omitempty"`
		Forum *struct {
			ID           int    `json:"id"`
			Name         string `json:"name"`
			Avatar       string `json:"avatar"`
			MemberNum    int    `json:"member_num"`
			PostNum      int    `json:"post_num"`
			RecommendTip string `json:"recommend_tip"`
			Desc         string `json:"desc"`
			Slogan       string `json:"slogan"`
			ForumCtime   int    `json:"forum_ctime"`
		} `json:"forum,omitempty"`
		Manager *struct {
			NameShow string `json:"name_show"`
			Portrait string `json:"portrait"`
		} `json:"manager,omitempty"`
	} `json:"data"`
	ErrorCode int    `json:"error_code"`
	ErrorMsg  string `json:"error_msg,omitempty"`
	// Logid      string `json:"logid"`
	// ServerTime int    `json:"server_time"`
	Time int `json:"time"`
}

type GetNewPCUserCardResponse

type GetNewPCUserCardResponse struct {
	No    int    `json:"no"`
	Error string `json:"error"`
	Data  struct {
		UserInfo *struct {
			NameShow      string `json:"name_show"`
			Portrait      string `json:"portrait"`
			TotalAgreeNum int    `json:"total_agree_num"`
			ConcernNum    int    `json:"concern_num"`
			FansNum       int    `json:"fans_num"`
			HasConcerned  int    `json:"has_concerned"`
			TiebaUID      string `json:"tieba_uid"`
			TbAge         string `json:"tb_age"`
			IPAddress     string `json:"ip_address"`
			Intro         string `json:"intro"`
			IconInfo      []struct {
				Name   string `json:"name"`
				Weight int    `json:"weight"`
				URL    string `json:"url"`
				Icon   string `json:"icon"`
				Value  int    `json:"value"`
			} `json:"icon_info"`
			Sex int `json:"sex"`
		} `json:"user_info,omitempty"`
	} `json:"data"`

	// Ctime string `json:"ctime"`
	ErrorCode int    `json:"error_code"`
	ErrorMsg  string `json:"error_msg,omitempty"`
	// Logid      string `json:"logid"`
	// ServerTime int    `json:"server_time"`
	Time int `json:"time"`
}

type GetRoomListByFidResponse

type GetRoomListByFidResponse struct {
	Data struct {
		MidGroupID string `json:"mid_group_id"`
		List       []struct {
			GroupName   string `json:"group_name"`
			GroupID     string `json:"group_id"`
			GroupWeight string `json:"group_weight"`
			RoomList    []struct {
				RoomID   string `json:"room_id"`
				RoomInfo struct {
					ForumID   string `json:"forum_id"`
					ForumName string `json:"forum_name"`
					GroupID   string `json:"group_id"`
					Name      string `json:"name"`
					Avatar    string `json:"avatar"`
					UnreadNum string `json:"unread_num"`
				} `json:"room_info"`
				MsgInfo struct {
					FromUID        string `json:"from_uid"`
					FromName       string `json:"from_name"`
					Content        string `json:"content"`
					MsgID          string `json:"msg_id"`
					MsgTime        string `json:"msg_time"`
					SpecialMsg     string `json:"special_msg"`
					SpecialMsgType string `json:"special_msg_type"`
				} `json:"msg_info"`
				JumpURL    string `json:"jump_url"`
				RoomWeight string `json:"room_weight"`
			} `json:"room_list"`
		} `json:"list"`
	} `json:"data"`

	ErrorMsg  string `json:"error_msg"`
	ErrorCode string `json:"error_code"`
}

type Honor

type Honor struct {
	Manager struct {
		Assist struct {
			Count     int      `json:"count,omitempty"`
			ForumList []string `json:"forum_list,omitempty"`
		} `json:"assist,omitempty"`
		Manager struct {
			Count     int      `json:"count,omitempty"`
			ForumList []string `json:"forum_list,omitempty"`
		} `json:"manager,omitempty"`
	} `json:"manager,omitempty"`
	Grade map[string]struct {
		Count     int      `json:"count,omitempty"`
		ForumList []string `json:"forum_list,omitempty"`
	} `json:"grade,omitempty"`
	Novice int `json:"novice,omitempty"`
}

type IsManagerPreCheckResponse

type IsManagerPreCheckResponse struct {
	IsManager bool   `json:"is_manager"`
	Role      string `json:"role"`
}

type LoginQRCode

type LoginQRCode struct {
	Imgurl string `json:"imgurl,omitempty"`
	Errno  int    `json:"errno,omitempty"`
	Sign   string `json:"sign,omitempty"`
}

type LoginResponse

type LoginResponse struct {
	Code    string `json:"code,omitempty"`
	Message string `json:"message,omitempty"`
	Data    struct {
		Session struct {
			Bduss      string `json:"bduss,omitempty"`
			StokenList string `json:"stokenList,omitempty"`
		} `json:"session,omitempty"`
		User struct {
			Username    string `json:"username,omitempty"`
			DisplayName string `json:"displayName,omitempty"`
		} `json:"user,omitempty"`
	} `json:"data,omitempty"`
}

type ManagerTasksResponse

type ManagerTasksResponse struct {
	No      int    `json:"no,omitempty"`
	ErrCode int    `json:"err_code,omitempty"`
	Error   string `json:"error,omitempty"`
	Data    struct {
		BawuTask BawuTask `json:"bawu_task,omitempty"`
	} `json:"data,omitempty"`
}

type McastMessageTextObject

type McastMessageTextObject struct {
	Text string `json:"text"`
}

type McastMessageTextObjectText

type McastMessageTextObjectText struct {
	RoomID        string `json:"room_id"`
	Type          string `json:"type"`
	BaiduUk       string `json:"baidu_uk"`
	Character     string `json:"character"`
	CharacterName string `json:"character_name"`
	Vip           string `json:"vip"`
	Name          string `json:"name"`
	Portrait      string `json:"portrait"`
	ContentType   string `json:"content_type"`
	ContentBody   string `json:"content_body"`
	AtData        []struct {
		AtType          string `json:"at_type"`
		AtBaiduUk       string `json:"at_baidu_uk"`
		AtName          string `json:"at_name"`
		AtVip           string `json:"at_vip"`
		AtCharacter     string `json:"at_character"`
		AtCharacterName string `json:"at_character_name"`
		AtPortrait      string `json:"at_portrait"`
	} `json:"at_data"`
	Ext string `json:"ext"`
}

type MultipartBodyBinaryFileType

type MultipartBodyBinaryFileType struct {
	Fieldname string
	Filename  string
	Binary    []byte
}

type PostSyncResponse

type PostSyncResponse struct {
	ClientIP string `json:"client_ip"`
	Client   struct {
		ClientID string `json:"client_id"`
	} `json:"client"`
	Portrait string `json:"portrait"`
	WlConfig struct {
		SampleID string `json:"sample_id"`
	} `json:"wl_config"`
}

type SendChatroomMessageContentText

type SendChatroomMessageContentText struct {
	RoomID      string                   `json:"room_id"`
	Type        string                   `json:"type"`
	ToUID       string                   `json:"to_uid"`
	Vip         string                   `json:"vip"`
	Name        string                   `json:"name"`
	Portrait    string                   `json:"portrait"`
	ContentType string                   `json:"content_type"`
	ContentBody string                   `json:"content_body"`
	Src         string                   `json:"src"`
	BaiduUk     string                   `json:"baidu_uk"`
	Ext         string                   `json:"ext"`
	AtData      *[]ChatroomMessageAtData `json:"at_data,omitempty"`
}

type SendChatroomMessageExt

type SendChatroomMessageExt struct {
	ForumID int `json:"forum_id"`
	Level   int `json:"level"`

	Content struct {
		RobotParams *SendChatroomMessageExtRobot `json:"robot_params,omitempty"`
	} `json:"content"`
	From     string                            `json:"from"`
	Portrait string                            `json:"portrait"`
	MainData []SendChatroomMessageUserMainData `json:"main_data"`
	Type     int                               `json:"type"`
	UserName string                            `json:"user_name"`

	IsSysMsg   int    `json:"is_sys_msg"`
	Version    string `json:"version"`
	RobotRole  int    `json:"robot_role"`
	Role       int    `json:"role"`
	SendStatus int    `json:"send_status"`
	SessionID  int    `json:"session_id"`
}

type SendChatroomMessageExtRobot

type SendChatroomMessageExtRobot struct {
	Scene string `json:"scene"`
	Type  string `json:"type"`
}

type SendChatroomMessageUserMainData

type SendChatroomMessageUserMainData struct {
	Type int                                  `json:"type"`
	Text *SendChatroomMessageUserMainDataText `json:"text,omitempty"`
	Icon *SendChatroomMessageUserMainDataIcon `json:"icon,omitempty"`
}

type SendChatroomMessageUserMainDataIcon

type SendChatroomMessageUserMainDataIcon struct {
	URL      string `json:"url"`
	Width    int    `json:"width"`
	Height   int    `json:"height"`
	Priority int    `json:"priority"`
	Type     string `json:"type"`
	Schema   string `json:"schema"`
}

type SendChatroomMessageUserMainDataText

type SendChatroomMessageUserMainDataText struct {
	Str           string                                    `json:"str"`
	Priority      int                                       `json:"priority"`
	ShortEnable   int                                       `json:"short_enable"`
	ShortLength   int                                       `json:"short_length"`
	ShortPriority int                                       `json:"short_priority"`
	Suffix        string                                    `json:"suffix"`
	Type          string                                    `json:"type"`
	TextColor     *SendChatroomMessageUserMainDataTextColor `json:"text_color,omitempty"`
}

type SendChatroomMessageUserMainDataTextColor

type SendChatroomMessageUserMainDataTextColor struct {
	Day   string `json:"day"`
	Night string `json:"night"`
	Type  int    `json:"type"`
}

type TbsResponse

type TbsResponse struct {
	Tbs     string `json:"tbs"`
	IsLogin int    `json:"is_login"`
}

type TiebaPanelUserInfoResponse

type TiebaPanelUserInfoResponse struct {
	No    int    `json:"no,omitempty"`
	Error string `json:"error,omitempty"`
	Data  struct {
		Name string `json:"name,omitempty"`
		// Identity                  any    `json:"identity,omitempty"`
		NameShow                  string          `json:"name_show,omitempty"`
		ShowNickname              string          `json:"show_nickname,omitempty"`
		ProfessionManagerNickName string          `json:"profession_manager_nick_name,omitempty"`
		Portrait                  string          `json:"portrait,omitempty"`
		TbAge                     json.RawMessage `json:"tb_age,omitempty"`
		PostNum                   json.RawMessage `json:"post_num,omitempty"`
		Honor                     json.RawMessage `json:"honor,omitempty"`
		VipInfo                   struct {
			// AScore     string `json:"a_score"`
			ETime string `json:"e_time"`
			// ExtScore   string `json:"ext_score"`
			IconURL    string `json:"icon_url"`
			IconURLNew string `json:"icon_url_new"`
			// NScore     int    `json:"n_score"`
			STime string `json:"s_time"`
		} `json:"vipInfo"`
		TbVip         bool            `json:"tb_vip,omitempty"`
		FollowedCount json.RawMessage `json:"followed_count,omitempty"`
	} `json:"data,omitempty"`
}

type TypeCookie

type TypeCookie struct {
	Bduss    string
	Stoken   string
	Tbs      string
	ShortTbs string
	IsLogin  bool

	ID       int32
	UID      int32
	Name     string
	Portrait string
	IsVIP    bool

	// blcp
	TriggerID int
	UK        int
	BaiduUID  int
	BDUK      string // <- GetBDUKfromUserId(BaiduUID)
}

type UnicastResponse

type UnicastResponse struct {
	Errno     int    `json:"errno"`
	ChannelID string `json:"channel_id"`
	ChannelV  string `json:"channel_v,omitempty"`
}

type UnicastResponseChannelV

type UnicastResponseChannelV struct {
	Status int    `json:"status,omitempty"`
	V      string `json:"v,omitempty"`
	U      any    `json:"u,omitempty"`
}

type UserInfo

type UserInfo struct {
	UserID           string         `json:"user_id,omitempty"`
	IsSignIn         string         `json:"is_sign_in,omitempty"`
	UserSignRank     string         `json:"user_sign_rank,omitempty"`
	SignTime         string         `json:"sign_time,omitempty"`
	ContSignNum      string         `json:"cont_sign_num,omitempty"`
	TotalSignNum     string         `json:"total_sign_num,omitempty"`
	CoutTotalSingNum string         `json:"cout_total_sing_num,omitempty"`
	HunSignNum       string         `json:"hun_sign_num,omitempty"`
	TotalResignNum   string         `json:"total_resign_num,omitempty"`
	IsOrgName        string         `json:"is_org_name,omitempty"`
	SignBonusPoint   string         `json:"sign_bonus_point,omitempty"`
	MissSignNum      string         `json:"miss_sign_num,omitempty"`
	LevelName        string         `json:"level_name,omitempty"`
	LevelupScore     string         `json:"levelup_score,omitempty"`
	AllLevelInfo     []AllLevelInfo `json:"all_level_info,omitempty"`
	LastLevelScore   string         `json:"last_level_score,omitempty"`
	LastScoreLeft    string         `json:"last_score_left,omitempty"`
	LastLevelName    string         `json:"last_level_name,omitempty"`
	LastLevel        string         `json:"last_level,omitempty"`
}

type UserInfoIncludedShortTbsResponse

type UserInfoIncludedShortTbsResponse struct {
	No    int    `json:"no"`
	Error string `json:"error"`
	Data  struct {
		ID   int    `json:"id"`
		Name string `json:"name"`
		// NameShow string `json:"name_show"`
		// NameLink any    `json:"name_link"`
		IsLogin bool `json:"is_login"`
		// NoUn              string `json:"no_un"`
		// Mobilephone       string `json:"mobilephone"`
		// Email             string `json:"email"`
		// IsHalfUser        int    `json:"is_half_user"`
		// TempName          string `json:"temp_name"`
		// SourceID          int    `json:"source_id"`
		// IsVerify          bool   `json:"is_verify"`
		Portrait string `json:"portrait"`
		UID      int    `json:"uid"`
		// Sid               string `json:"sid"`
		// LikeForumNum      int    `json:"like_forum_num"`
		// PostNum           int    `json:"post_num"`
		// ConcernNum        int    `json:"concern_num"`
		// FansNum           int    `json:"fans_num"`
		// Intro             string `json:"intro"`
		// PortraitURL string `json:"portrait_url"`
		// UserSex           int    `json:"user_sex"`
		// IsBusinessAccount int    `json:"is_business_account"`
		VipInfo struct {
			// AScore     string `json:"a_score"`
			ETime string `json:"e_time"`
		} `json:"vipInfo"`
		Tbs    string `json:"tbs"`
		ItbTbs string `json:"itb_tbs"`
	} `json:"data"`
}

type VipInfo

type VipInfo struct {
	AScore   int    `json:"a_score,omitempty"`
	ETime    string `json:"e_time,omitempty"`
	ExtScore string `json:"ext_score,omitempty"`
	IconURL  string `json:"icon_url,omitempty"`
	NScore   int    `json:"n_score,omitempty"`
	STime    string `json:"s_time,omitempty"`
	VLevel   int    `json:"v_level,omitempty"`
	VStatus  string `json:"v_status,omitempty"`
	YScore   int    `json:"y_score,omitempty"`
}

type WebForumListResponse

type WebForumListResponse struct {
	Data struct {
		LikeForum struct {
			List []*struct {
				Avatar       string `json:"avatar,omitempty"`
				ForumID      int    `json:"forum_id,omitempty"`
				ForumName    string `json:"forum_name,omitempty"`
				HotNum       int    `json:"hot_num,omitempty"`
				IsBrandForum int    `json:"is_brand_forum,omitempty"`
				LevelID      int    `json:"level_id,omitempty"`
			} `json:"list,omitempty"`
			Page struct {
				CurPage   int `json:"cur_page,omitempty"`
				TotalPage int `json:"total_page,omitempty"`
			} `json:"page,omitempty"`
		} `json:"like_forum,omitempty"`
		// Tokens struct {
		// 	BottomBanner          string `json:"bottom_banner,omitempty"`
		// 	BottomLayer           string `json:"bottom_layer,omitempty"`
		// 	IndexFooterClientDown string `json:"index_footer_client_down,omitempty"`
		// 	IndexMessageIcon      string `json:"index_message_icon,omitempty"`
		// } `json:"tokens,omitempty"`
		// UbsAbtestConfig []struct {
		// 	Sid string `json:"sid,omitempty"`
		// } `json:"ubs_abtest_config,omitempty"`
		// UbsSampleIds string `json:"ubs_sample_ids,omitempty"`
		UserInfo struct {
			ID      int `json:"id,omitempty"`
			IsLogin int `json:"is_login,omitempty"`
		} `json:"user_info,omitempty"`
	} `json:"data,omitempty"`
	Errmsg string `json:"errmsg,omitempty"`
	Errno  int    `json:"errno,omitempty"`
}

type WrapUnicastResponse

type WrapUnicastResponse struct {
	ChannelV *UnicastResponseChannelV `json:"channel_v,omitempty"`
	UnicastResponse
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL