Help us shape the future of Go! Take the 2026 Go Developer Survey

client

package
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2024 License: AGPL-3.0 Imports: 48 Imported by: 5

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrAlreadyOnline  = errors.New("already online")
	ErrMemberNotFound = errors.New("member not found")
	ErrNotExists      = errors.New("not exists")
)

Functions

This section is empty.

Types

type ClientDisconnectedEvent

type ClientDisconnectedEvent struct {
	Message string
}

type ConnectionQualityInfo

type ConnectionQualityInfo struct {
	// ChatServerLatency 聊天服务器延迟
	ChatServerLatency int64
	// ChatServerPacketLoss 聊天服务器ICMP丢包数
	ChatServerPacketLoss int
	// LongMessageServerLatency 长消息服务器延迟. 涉及长消息以及合并转发消息下载
	LongMessageServerLatency int64
	// LongMessageServerResponseLatency 长消息服务器返回延迟
	LongMessageServerResponseLatency int64
	// SrvServerLatency Highway服务器延迟. 涉及媒体以及群文件上传
	SrvServerLatency int64
	// SrvServerPacketLoss Highway服务器ICMP丢包数.
	SrvServerPacketLoss int
}

ConnectionQualityInfo 客户端连接质量测试结果 延迟单位为 ms 如为 9999 则测试失败 测试方法为 TCP 连接测试 丢包测试方法为 ICMP. 总共发送 10 个包, 记录丢包数

type EventHandle

type EventHandle[T any] struct {
	// contains filtered or unexported fields
}

func (*EventHandle[T]) Subscribe

func (handle *EventHandle[T]) Subscribe(handler func(client *QQClient, event T))

type Logger added in v0.0.9

type Logger interface {
	Info(format string, args ...any)
	Warning(format string, args ...any)
	Error(format string, args ...any)
	Debug(format string, args ...any)
	Dump(dumped []byte, format string, args ...any)
}

type QQClient

type QQClient struct {
	Uin uint32

	Online atomic.Bool

	TCP         network.TCPClient // todo: combine other protocol state into one struct
	ConnectTime time.Time

	// event handles
	GroupMessageEvent   EventHandle[*message.GroupMessage]
	PrivateMessageEvent EventHandle[*message.PrivateMessage]
	TempMessageEvent    EventHandle[*message.TempMessage]

	SelfGroupMessageEvent   EventHandle[*message.GroupMessage]
	SelfPrivateMessageEvent EventHandle[*message.PrivateMessage]
	SelfTempMessageEvent    EventHandle[*message.TempMessage]

	GroupInvitedEvent           EventHandle[*event.GroupInvite]            // 被邀请入群
	GroupMemberJoinRequestEvent EventHandle[*event.GroupMemberJoinRequest] // 加群申请
	GroupMemberJoinEvent        EventHandle[*event.GroupMemberIncrease]    // 成员入群
	GroupMemberLeaveEvent       EventHandle[*event.GroupMemberDecrease]    // 成员退群
	GroupMuteEvent              EventHandle[*event.GroupMute]
	GroupDigestEvent            EventHandle[*event.GroupDigestEvent] // 精华消息
	GroupRecallEvent            EventHandle[*event.GroupRecall]
	NewFriendRequestEvent       EventHandle[*event.NewFriendRequest] // 好友申请
	FriendRecallEvent           EventHandle[*event.FriendRecall]
	RenameEvent                 EventHandle[*event.Rename]
	FriendNotifyEvent           EventHandle[event.INotifyEvent]
	GroupNotifyEvent            EventHandle[event.INotifyEvent]

	DisconnectedEvent EventHandle[*ClientDisconnectedEvent]
	// contains filtered or unexported fields
}

func NewClient

func NewClient(uin uint32, signUrl string, appInfo *auth.AppInfo) *QQClient

NewClient 创建一个新的 QQ Client

func (*QQClient) Device

func (c *QQClient) Device() *auth.DeviceInfo

func (*QQClient) Disconnect

func (c *QQClient) Disconnect()

Disconnect 中断连接, 不释放资源

func (*QQClient) FastLogin added in v0.0.11

func (c *QQClient) FastLogin(sig *auth.SigInfo) error

func (*QQClient) FetchFriends

func (c *QQClient) FetchFriends() ([]*entity.Friend, error)

FetchFriends 获取好友列表信息

func (*QQClient) FetchGroupMember

func (c *QQClient) FetchGroupMember(groupUin, memberUin uint32) (*entity.GroupMember, error)

FetchGroupMember 获取对应群的群成员信息

func (*QQClient) FetchGroupMembers added in v0.0.11

func (c *QQClient) FetchGroupMembers(groupUin uint32, token string) ([]*entity.GroupMember, string, error)

FetchGroupMembers 获取对应群的所有群成员信息,使用token可以获取下一页的群成员信息

func (*QQClient) FetchGroups

func (c *QQClient) FetchGroups() ([]*entity.Group, error)

FetchGroups 获取所有已加入的群的信息

func (*QQClient) FetchQRCode added in v0.0.11

func (c *QQClient) FetchQRCode(size, margin, ecLevel uint32) ([]byte, string, error)

func (*QQClient) FetchQRCodeDefault added in v0.0.11

func (c *QQClient) FetchQRCodeDefault() ([]byte, string, error)

func (*QQClient) FriendPoke

func (c *QQClient) FriendPoke(uin uint32) error

FriendPoke 戳一戳好友

func (*QQClient) GetAllGroupsInfo

func (c *QQClient) GetAllGroupsInfo() (map[uint32]*entity.Group, error)

func (*QQClient) GetAllGroupsMembersData

func (c *QQClient) GetAllGroupsMembersData() (map[uint32]map[uint32]*entity.GroupMember, error)

GetAllGroupsMembersData 获取所有群的群成员信息

func (*QQClient) GetCachedAllFriendsInfo added in v0.0.11

func (c *QQClient) GetCachedAllFriendsInfo() map[uint32]*entity.Friend

GetCachedAllFriendsInfo 获取所有好友信息(缓存)

func (*QQClient) GetCachedAllGroupsInfo

func (c *QQClient) GetCachedAllGroupsInfo() map[uint32]*entity.Group

GetCachedAllGroupsInfo 获取所有群信息(缓存)

func (*QQClient) GetCachedFriendInfo

func (c *QQClient) GetCachedFriendInfo(uin uint32) *entity.Friend

GetCachedFriendInfo 获取好友信息(缓存)

func (*QQClient) GetCachedGroupInfo

func (c *QQClient) GetCachedGroupInfo(groupUin uint32) *entity.Group

GetCachedGroupInfo 获取群信息(缓存)

func (*QQClient) GetCachedMemberInfo

func (c *QQClient) GetCachedMemberInfo(uin, groupUin uint32) *entity.GroupMember

GetCachedMemberInfo 获取群成员信息(缓存)

func (*QQClient) GetCachedMembersInfo

func (c *QQClient) GetCachedMembersInfo(groupUin uint32) map[uint32]*entity.GroupMember

GetCachedMembersInfo 获取指定群所有群成员信息(缓存)

func (*QQClient) GetFriendsData

func (c *QQClient) GetFriendsData() (map[uint32]*entity.Friend, error)

GetFriendsData 获取好友列表数据

func (*QQClient) GetGroupMembersData

func (c *QQClient) GetGroupMembersData(groupUin uint32) (map[uint32]*entity.GroupMember, error)

GetGroupMembersData 获取指定群所有成员信息

func (*QQClient) GetGroupRecordUrl added in v0.0.11

func (c *QQClient) GetGroupRecordUrl(groupUin uint32, node *oidb.IndexNode) (string, error)

GetGroupRecordUrl 获取群聊语音下载url

func (*QQClient) GetPrivateRecordUrl added in v0.0.11

func (c *QQClient) GetPrivateRecordUrl(node *oidb.IndexNode) (string, error)

GetPrivateRecordUrl 获取私聊语言下载url

func (*QQClient) GetQRCodeResult

func (c *QQClient) GetQRCodeResult() (qrcodeState.State, error)

func (*QQClient) GetStatistics

func (c *QQClient) GetStatistics() *Statistics

func (*QQClient) GetUid

func (c *QQClient) GetUid(uin uint32, groupUin ...uint32) string

GetUid 获取缓存中对应uin的uid

func (*QQClient) GetUin

func (c *QQClient) GetUin(uid string, groupUin ...uint32) uint32

GetUin 获取缓存中对应的uin

func (*QQClient) GroupKickMember

func (c *QQClient) GroupKickMember(groupUin, uin uint32, rejectAddRequest bool) error

GroupKickMember 踢出群成员,可选是否拒绝加群请求

func (*QQClient) GroupLeave

func (c *QQClient) GroupLeave(groupUin uint32) error

GroupLeave 退出群聊

func (*QQClient) GroupMuteGlobal

func (c *QQClient) GroupMuteGlobal(groupUin uint32, isMute bool) error

GroupMuteGlobal 群全员禁言

func (*QQClient) GroupMuteMember

func (c *QQClient) GroupMuteMember(groupUin, uin, duration uint32) error

GroupMuteMember 禁言群成员

func (*QQClient) GroupPoke

func (c *QQClient) GroupPoke(groupUin, uin uint32) error

GroupPoke 戳一戳群友

func (*QQClient) GroupRemark

func (c *QQClient) GroupRemark(groupUin uint32, remark string) error

GroupRemark 设置群聊备注

func (*QQClient) GroupRename

func (c *QQClient) GroupRename(groupUin uint32, name string) error

GroupRename 设置群聊名称

func (*QQClient) GroupRenameMember

func (c *QQClient) GroupRenameMember(groupUin, uin uint32, name string) error

GroupRenameMember 设置群成员昵称

func (*QQClient) GroupSetAdmin

func (c *QQClient) GroupSetAdmin(groupUin, uin uint32, isAdmin bool) error

GroupSetAdmin 设置群管理员

func (*QQClient) GroupSetSpecialTitle

func (c *QQClient) GroupSetSpecialTitle(groupUin, uin uint32, title string) error

GroupSetSpecialTitle 设置群成员专属头衔

func (*QQClient) ImageUploadGroup

func (c *QQClient) ImageUploadGroup(groupUin uint32, image *message.ImageElement) (*message.ImageElement, error)

func (*QQClient) ImageUploadPrivate

func (c *QQClient) ImageUploadPrivate(targetUid string, image *message.ImageElement) (*message.ImageElement, error)

func (*QQClient) Login

func (c *QQClient) Login(password, qrcodePath string) error

func (*QQClient) NickName

func (c *QQClient) NickName() string

func (*QQClient) PasswordLogin

func (c *QQClient) PasswordLogin(password string) (loginState.State, error)

func (*QQClient) PreprocessGroupMessageEvent added in v0.0.11

func (c *QQClient) PreprocessGroupMessageEvent(msg *msgConverter.GroupMessage) error

func (*QQClient) PreprocessOther added in v0.0.11

func (c *QQClient) PreprocessOther(g eventConverter.CanPreprocess) error

func (*QQClient) PreprocessPrivateMessageEvent added in v0.0.11

func (c *QQClient) PreprocessPrivateMessageEvent(msg *msgConverter.PrivateMessage) error

func (*QQClient) QRCodeConfirmed

func (c *QQClient) QRCodeConfirmed() error

func (*QQClient) QRCodeLogin

func (c *QQClient) QRCodeLogin(refreshInterval int) error

func (*QQClient) RecallGroupMessage

func (c *QQClient) RecallGroupMessage(GrpUin, seq uint32) error

RecallGroupMessage 撤回群聊消息

func (*QQClient) RecordUploadGroup added in v0.0.11

func (c *QQClient) RecordUploadGroup(groupUin uint32, record *message.VoiceElement) (*message.VoiceElement, error)

func (*QQClient) RecordUploadPrivate added in v0.0.11

func (c *QQClient) RecordUploadPrivate(targetUid string, record *message.VoiceElement) (*message.VoiceElement, error)

func (*QQClient) RefreshAllGroupMembersCache

func (c *QQClient) RefreshAllGroupMembersCache() error

RefreshAllGroupMembersCache 刷新所有群的群成员缓存

func (*QQClient) RefreshAllGroupsInfo

func (c *QQClient) RefreshAllGroupsInfo() error

RefreshAllGroupsInfo 刷新所有群信息缓存

func (*QQClient) RefreshFriendCache

func (c *QQClient) RefreshFriendCache() error

RefreshFriendCache 刷新好友缓存

func (*QQClient) RefreshGroupMembersCache

func (c *QQClient) RefreshGroupMembersCache(groupUin uint32) error

RefreshGroupMembersCache 刷新指定群的群成员员缓存

func (*QQClient) Register added in v0.0.11

func (c *QQClient) Register() error

func (*QQClient) Release

func (c *QQClient) Release()

func (*QQClient) SendGroupMessage

func (c *QQClient) SendGroupMessage(groupUin uint32, elements []message2.IMessageElement, needPreprocess ...bool) (resp *action.SendMessageResponse, err error)

SendGroupMessage 发送群聊消息,默认会对消息进行预处理

func (*QQClient) SendPrivateMessage

func (c *QQClient) SendPrivateMessage(uin uint32, elements []message2.IMessageElement, needPreprocess ...bool) (resp *action.SendMessageResponse, err error)

SendPrivateMessage 发送群聊消息,默认会对消息进行预处理

func (*QQClient) SendRawMessage

func (c *QQClient) SendRawMessage(route *message.RoutingHead, body *message.MessageBody) (resp *action.SendMessageResponse, err error)

func (*QQClient) SendSsoPacket

func (c *QQClient) SendSsoPacket(cmd string, body []byte) ([]byte, error)

SendSsoPacket 发送签名回调包给服务器并获取返回结果供提交

func (*QQClient) SendTempMessage

func (c *QQClient) SendTempMessage(groupUin uint32, uin uint32, elements []message2.IMessageElement) (resp *action.SendMessageResponse, err error)

func (*QQClient) SessionLogin added in v0.0.6

func (c *QQClient) SessionLogin() error

func (*QQClient) SetLogger added in v0.0.9

func (c *QQClient) SetLogger(logger Logger)

func (*QQClient) Sig

func (c *QQClient) Sig() *auth.SigInfo

func (*QQClient) SubscribeEventHandler

func (c *QQClient) SubscribeEventHandler(handler any)

func (*QQClient) TokenLogin

func (c *QQClient) TokenLogin() (loginState.State, error)

func (*QQClient) UseDevice

func (c *QQClient) UseDevice(d *auth.DeviceInfo)

func (*QQClient) UseSig

func (c *QQClient) UseSig(s auth.SigInfo)

type Statistics

type Statistics struct {
	PacketReceived  atomic.Uint64
	PacketSent      atomic.Uint64
	PacketLost      atomic.Uint64
	MessageReceived atomic.Uint64
	MessageSent     atomic.Uint64
	LastMessageTime atomic.Int64
	DisconnectTimes atomic.Uint32
	LostTimes       atomic.Uint32
}

func (*Statistics) MarshalJSON

func (m *Statistics) MarshalJSON() ([]byte, error)

MarshalJSON encodes the wrapped statistics into JSON.

Jump to

Keyboard shortcuts

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