client

package
v0.0.16 Latest Latest
Warning

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

Go to latest
Published: Aug 20, 2024 License: AGPL-3.0 Imports: 50 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

func SendRequest added in v0.0.15

func SendRequest(request *http.Request) (*http.Response, error)

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

	UA string

	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]

	GroupJoinEvent  EventHandle[*event.GroupMemberIncrease] // bot进群
	GroupLeaveEvent EventHandle[*event.GroupMemberDecrease] // bot 退群

	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]
	GroupMemberPermissionChangedEvent EventHandle[*event.GroupMemberPermissionChanged]
	GroupNameUpdatedEvent             EventHandle[*event.GroupNameUpdated]
	MemberSpecialTitleUpdatedEvent    EventHandle[*event.MemberSpecialTitleUpdated]
	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, appInfo *auth.AppInfo, signUrl ...string) *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) FetchClientKey added in v0.0.15

func (c *QQClient) FetchClientKey() (string, error)

FetchClientKey 获取ClientKey

func (*QQClient) FetchCookies added in v0.0.15

func (c *QQClient) FetchCookies(domains []string) ([]string, error)

FetchCookies 获取cooikes

func (*QQClient) FetchFriends

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

FetchFriends 获取好友列表信息,使用token可以获取下一页的群成员信息

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) FetchUserInfo added in v0.0.13

func (c *QQClient) FetchUserInfo(uid string) (*entity.Friend, error)

FetchUserInfo 获取用户信息

func (*QQClient) FetchUserInfoUin added in v0.0.15

func (c *QQClient) FetchUserInfoUin(uin uint32) (*entity.Friend, error)

FetchUserInfoUin 通过uin获取用户信息

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) GetCookies added in v0.0.15

func (c *QQClient) GetCookies(domain string) (string, error)

func (*QQClient) GetCsrfToken added in v0.0.15

func (c *QQClient) GetCsrfToken() (int, error)

func (*QQClient) GetFriendsData

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

GetFriendsData 获取好友列表数据

func (*QQClient) GetGroupFileUrl added in v0.0.15

func (c *QQClient) GetGroupFileUrl(groupUin uint32, fileID string) (string, error)

GetGroupFileUrl 获取群聊文件下载url

func (*QQClient) GetGroupImageUrl added in v0.0.15

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

GetGroupImageUrl 获取群聊图片下载url

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) GetGroupSystemMessages added in v0.0.13

func (c *QQClient) GetGroupSystemMessages(groupUin ...uint32) ([]*entity.GroupJoinRequest, error)

GetGroupSystemMessages 获取加群请求信息

func (*QQClient) GetPrivateFileUrl added in v0.0.15

func (c *QQClient) GetPrivateFileUrl(fileUUID string, fileHash string) (string, error)

GetPrivateFileUrl 获取私聊文件下载url

func (*QQClient) GetPrivateImageUrl added in v0.0.15

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

GetPrivateImageUrl 获取私聊图片下载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) GetSkey added in v0.0.15

func (c *QQClient) GetSkey() (string, 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) RefreshGroupMemberCache added in v0.0.13

func (c *QQClient) RefreshGroupMemberCache(groupUin, memberUin uint32) error

RefreshGroupMemberCache 刷新一个群的指定群成员缓存

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) (*message2.GroupMessage, error)

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

func (*QQClient) SendPrivateMessage

func (c *QQClient) SendPrivateMessage(uin uint32, elements []message2.IMessageElement, needPreprocess ...bool) (*message2.PrivateMessage, error)

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

func (*QQClient) SendRawMessage

func (c *QQClient) SendRawMessage(route *message.RoutingHead, body *message.MessageBody, random uint32) (*action.SendMessageResponse, 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) (*message2.TempMessage, error)

func (*QQClient) SessionLogin added in v0.0.6

func (c *QQClient) SessionLogin() error

func (*QQClient) SetFriendRequest added in v0.0.15

func (c *QQClient) SetFriendRequest(accept bool, targetUid string) error

SetFriendRequest 处理好友请求

func (*QQClient) SetGroupRequest added in v0.0.13

func (c *QQClient) SetGroupRequest(accept bool, sequence uint64, typ uint32, groupUin uint32, message string) error

SetGroupRequest 处理加群请求

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.

type TicketService added in v0.0.15

type TicketService struct {
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

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