From 5c0c7e1f5bcab3c3e53f0d51c06d11f12d376da8 Mon Sep 17 00:00:00 2001 From: Ivy1996-encode <2682904957@qq.com> Date: Sun, 21 Feb 2021 11:27:02 +0800 Subject: [PATCH] Add Members.SearchByUserName func --- bot_test.go | 24 ++++++++++++++++++++++++ message.go | 16 +++++----------- user.go | 24 +++++++++++++++--------- 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/bot_test.go b/bot_test.go index dcd0d99..18cb5f6 100644 --- a/bot_test.go +++ b/bot_test.go @@ -50,3 +50,27 @@ func TestBotMessageHandler(t *testing.T) { } bot.Block() } + +func TestBotMessageSender(t *testing.T) { + messageHandler := func(message *Message) { + if message.IsSendByGroup() { + sender, err := message.Sender() + if err != nil { + fmt.Println(err) + return + } + fmt.Println(sender) + if message.IsText() || message.Content == "test message" { + message.ReplyText("hello") + } + } + } + bot := DefaultBot() + bot.RegisterMessageHandler(messageHandler) + bot.UUIDCallback = PrintlnQrcodeUrl + if err := bot.Login(); err != nil { + fmt.Println(err) + return + } + bot.Block() +} diff --git a/message.go b/message.go index d642c25..a9eb741 100644 --- a/message.go +++ b/message.go @@ -57,12 +57,11 @@ func (m *Message) Sender() (*User, error) { if m.FromUserName == m.Bot.self.User.UserName { return m.Bot.self.User, nil } - for _, member := range members { - if member.UserName == m.FromUserName { - return member.Detail() - } + user, err := members.SearchByUserName(m.FromUserName) + if err != nil { + return nil, err } - return nil, errors.New("no such user found") + return user.Detail() } // 获取消息在群里面的发送者 @@ -78,12 +77,7 @@ func (m *Message) SenderInGroup() (*User, error) { if err != nil { return nil, err } - for _, member := range group.MemberList { - if m.senderInGroupUserName == member.UserName { - return member, nil - } - } - return nil, errors.New("no such user found") + return group.MemberList.SearchByUserName(m.senderInGroupUserName) } // 判断消息是否由自己发送 diff --git a/user.go b/user.go index fe0bb32..0101147 100644 --- a/user.go +++ b/user.go @@ -29,7 +29,7 @@ type User struct { RemarkPYQuanPin string Signature string MemberCount int - MemberList []*User + MemberList Members OwnerUin int Statues int AttrStatus int @@ -161,15 +161,12 @@ func (s *Self) FileHelper() (*Friend, error) { if err != nil { return nil, err } - for _, member := range members { - if member.UserName == "filehelper" { - fileHelper := &Friend{member} - // 将找到的缓存起来,方便下次调用 - s.fileHelper = fileHelper - return s.fileHelper, nil - } + user, err := members.SearchByUserName("filehelper") + if err != nil { + return nil, err } - return nil, errors.New("filehelper does not exist") + s.fileHelper = &Friend{user} + return s.fileHelper, nil } // 获取所有的好友 @@ -298,3 +295,12 @@ func (m Members) SetOwner(s *Self) { member.Self = s } } + +func (m Members) SearchByUserName(username string) (*User, error) { + for _, member := range m { + if member.UserName == username { + return member, nil + } + } + return nil, errors.New("no such user found") +}