53 lines
2.4 KiB
Go
53 lines
2.4 KiB
Go
|
package wxhelper
|
|||
|
|
|||
|
import (
|
|||
|
"errors"
|
|||
|
"slices"
|
|||
|
robotModel "wechat-robot/model/robot"
|
|||
|
)
|
|||
|
|
|||
|
type wxHelper struct {
|
|||
|
host string // hook接口地址
|
|||
|
version WeChatVersion // 微信版本
|
|||
|
}
|
|||
|
|
|||
|
// Api
|
|||
|
// @description: 微信助手接口
|
|||
|
type Api interface {
|
|||
|
CheckLogin() bool // 检查是否登录
|
|||
|
UserInfo() (robotModel.UserInfo, error) // 获取机器人信息
|
|||
|
SendTextMsg(toUserId, atUserId, msg string) error // 发送文字消息
|
|||
|
SendFileMsg(toUserId, filePath string) error // 发送文件消息
|
|||
|
SendImagesMsg(toUserId, imagePath string) error // 发送图片消息
|
|||
|
SendCustomEmotionMsg(toUserId string, emotionPath string) error // 发送自定义表情消息
|
|||
|
GetContactList() []robotModel.FriendItem // 获取联系人列表
|
|||
|
GetChatRoomDetailInfo(chatRoomId string) robotModel.ChatRoomDetailInfo // 获取群聊详情
|
|||
|
AddMemberToChatRoom(chatRoomId string, memberWxIds []string) error // 添加群成员
|
|||
|
DelMemberFromChatRoom(chatRoomId string, memberWxIds []string) error // 删除群成员
|
|||
|
GetMemberFromChatRoom(chatRoomId string) robotModel.GroupUser // 获取群成员
|
|||
|
GetContactProfile(wxId string) robotModel.ContactProfile // 获取好友资料
|
|||
|
InviteMemberToChatRoom(chatRoomId string, memberWxIds []string) error // 邀请入群
|
|||
|
ModifyChatRoomNickname(wxId, nickname string) error // 修改群内昵称
|
|||
|
StartHook(tcpIp string, tcpPort int) error // 开启消息监听 - 暂时只支持tcp,因为http有点儿不太好使
|
|||
|
StopHook() error // 关闭消息监听
|
|||
|
DownloadAttach(msgId int) error // 下载附件
|
|||
|
DecodeImage(filePath, storeDir string) error // 解码图片
|
|||
|
}
|
|||
|
|
|||
|
// New
|
|||
|
// @description: 创建微信助手
|
|||
|
// @param host
|
|||
|
// @return Api
|
|||
|
func New(host string, version WeChatVersion) (Api, error) {
|
|||
|
// 判断微信版本是否支持
|
|||
|
keys := make([]WeChatVersion, 0, len(apiMap))
|
|||
|
for k := range apiMap {
|
|||
|
keys = append(keys, k)
|
|||
|
}
|
|||
|
if !slices.Contains(keys, version) {
|
|||
|
return nil, errors.New("不支持的微信版本")
|
|||
|
}
|
|||
|
|
|||
|
return &wxHelper{host: host, version: version}, nil
|
|||
|
}
|