add message.receiver support

This commit is contained in:
ivy1996-encode 2021-03-13 23:00:29 +08:00
parent 485cd56cdc
commit d4b23ea156
2 changed files with 51 additions and 37 deletions

2
bot.go
View File

@ -164,7 +164,7 @@ func (b *Bot) getMessage() error {
// 遍历所有的新的消息,依次处理
for _, message := range resp.AddMsgList {
// 根据不同的消息类型来进行处理,方便后续统一调用
processMessage(message, b)
message.init(b)
// 调用自定义的处理方法
b.messageHandlerGroups.ProcessMessage(message)
}

View File

@ -41,6 +41,8 @@ type Message struct {
ToUserName string
Url string
VoiceLength int
IsAt bool
Bot *Bot
senderInGroupUserName string
mu sync.RWMutex
@ -80,6 +82,18 @@ func (m *Message) SenderInGroup() (*User, error) {
return group.MemberList.SearchByUserName(m.senderInGroupUserName)
}
func (m *Message) Receiver() (*User, error) {
if m.IsSendByGroup() {
if sender, err := m.Sender(); err != nil {
return nil, err
} else {
return sender.MemberList.SearchByUserName(m.ToUserName)
}
} else {
return m.Bot.self.MemberList.SearchByUserName(m.ToUserName)
}
}
// 判断消息是否由自己发送
func (m *Message) IsSendBySelf() bool {
return m.FromUserName == m.Bot.self.User.UserName
@ -172,6 +186,15 @@ func (m *Message) Get(key string) (value interface{}, exist bool) {
return
}
func (m *Message) init(bot *Bot) {
m.Bot = bot
if m.IsSendByGroup() {
data := strings.Split(m.Content, ":<br/>")
m.Content = strings.Join(data[1:], "")
m.senderInGroupUserName = data[0]
}
}
//func (m *Message) Agree() error {
// if !m.IsFriendAdd() {
// return fmt.Errorf("the excepted message type is 37, but got %d", m.MsgType)
@ -230,12 +253,3 @@ type RecommendInfo struct {
UserName string
VerifyFlag int
}
func processMessage(message *Message, bot *Bot) {
message.Bot = bot
if message.IsSendByGroup() {
data := strings.Split(message.Content, ":<br/>")
message.Content = strings.Join(data[1:], "")
message.senderInGroupUserName = data[0]
}
}