diff --git a/message.go b/message.go index f97b1fc..fbedc72 100644 --- a/message.go +++ b/message.go @@ -342,11 +342,19 @@ func (m *Message) RevokeMsg() (*RevokeMsg, error) { } // Agree 同意好友的请求 -func (m *Message) Agree(verifyContents ...string) error { +func (m *Message) Agree(verifyContents ...string) (*Friend, error) { if !m.IsFriendAdd() { - return fmt.Errorf("friend add message required") + return nil, errors.New("friend add message required") } - return m.Bot.Caller.WebWxVerifyUser(m.Bot.Storage, m.RecommendInfo, strings.Join(verifyContents, "")) + err := m.Bot.Caller.WebWxVerifyUser(m.Bot.Storage, m.RecommendInfo, strings.Join(verifyContents, "")) + if err != nil { + return nil, err + } + friend := newFriend(m.RecommendInfo.UserName, m.Bot.self) + if err = friend.Detail(); err != nil { + return nil, err + } + return friend, nil } // AsRead 将消息设置为已读 diff --git a/user.go b/user.go index ab3367a..691c644 100644 --- a/user.go +++ b/user.go @@ -641,12 +641,16 @@ func (m Members) init(self *Self) { } } +func newFriend(username string, self *Self) *Friend { + return &Friend{&User{UserName: username, Self: self}} +} + // NewFriendHelper 这里为了兼容Desktop版本找不到文件传输助手的问题 // 文件传输助手的微信身份标识符永远是filehelper // 这种形式的对象可能缺少一些其他属性 // 但是不影响发送信息的功能 func NewFriendHelper(self *Self) *Friend { - return &Friend{&User{UserName: "filehelper", Self: self}} + return newFriend("filehelper", self) } // SendTextToMp 发送文本消息给公众号