Skip to content

Commit

Permalink
update message processor (eatmoreapple#502)
Browse files Browse the repository at this point in the history
  • Loading branch information
eatmoreapple authored Jun 10, 2024
1 parent 58cd2da commit afd0c22
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 31 deletions.
2 changes: 1 addition & 1 deletion caller.go
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@ func (c *Caller) WebWxSendFile(ctx context.Context, reader io.Reader, opt *Calle
}
// 构造新的文件类型的信息
stat, _ := file.Stat()
appMsg := NewFileAppMessage(stat, resp.MediaId)
appMsg := newFileAppMessage(stat, resp.MediaId)
content, err := appMsg.XmlByte()
if err != nil {
return nil, err
Expand Down
4 changes: 2 additions & 2 deletions message.go
Original file line number Diff line number Diff line change
Expand Up @@ -492,7 +492,7 @@ func (m *Message) Get(key string) (value interface{}, exist bool) {
// 消息初始化,根据不同的消息作出不同的处理
func (m *Message) init(bot *Bot) {
m.bot = bot
defaultMessageObserver.OnMessageReceive(m)
defaultMessageProcessor.ProcessMessage(m)
}

// SendMessage 发送消息的结构体
Expand Down Expand Up @@ -709,7 +709,7 @@ func (f appmsg) XmlByte() ([]byte, error) {
return xml.Marshal(f)
}

func NewFileAppMessage(stat os.FileInfo, attachId string) *appmsg {
func newFileAppMessage(stat os.FileInfo, attachId string) *appmsg {
m := &appmsg{AppId: appMessageAppId, Title: stat.Name()}
m.AppAttach.AttachId = attachId
m.AppAttach.TotalLen = stat.Size()
Expand Down
56 changes: 28 additions & 28 deletions message_observer.go → message_processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,31 @@ import (
"strings"
)

type MessageObserver interface {
OnMessageReceive(msg *Message)
type MessageProcessor interface {
ProcessMessage(msg *Message)
}

type MessageObserverGroup []MessageObserver
type MessageProcessorGroup []MessageProcessor

func (g MessageObserverGroup) OnMessageReceive(msg *Message) {
for _, observer := range g {
observer.OnMessageReceive(msg)
func (g MessageProcessorGroup) ProcessMessage(msg *Message) {
for _, processor := range g {
processor.ProcessMessage(msg)
}
}

// 保存消息原始内容
type messageRowContentObserver struct{}
type messageRowContentProcessor struct{}

func (m *messageRowContentObserver) OnMessageReceive(msg *Message) {
func (m *messageRowContentProcessor) ProcessMessage(msg *Message) {
raw, _ := json.Marshal(msg)
msg.Raw = raw
msg.RawContent = msg.Content
}

// 保存发送者在群里的用户名
type senderInGroupObserver struct{}
type senderInGroupMessageProcessor struct{}

func (s *senderInGroupObserver) OnMessageReceive(msg *Message) {
func (s *senderInGroupMessageProcessor) ProcessMessage(msg *Message) {
if !msg.IsSendByGroup() || msg.IsSystem() || msg.IsSendBySelf() {
return
}
Expand All @@ -43,9 +43,9 @@ func (s *senderInGroupObserver) OnMessageReceive(msg *Message) {
}

// 检查消息是否被@了, 不是特别严谨
type atMessageObserver struct{}
type atMessageProcessor struct{}

func (g *atMessageObserver) OnMessageReceive(msg *Message) {
func (g *atMessageProcessor) ProcessMessage(msg *Message) {
if !msg.IsSendByGroup() {
return
}
Expand Down Expand Up @@ -81,30 +81,30 @@ func (g *atMessageObserver) OnMessageReceive(msg *Message) {
}

// 处理消息中的换行符
type wrapLineMessageObserver struct{}
type wrapLineMessageProcessor struct{}

func (w *wrapLineMessageObserver) OnMessageReceive(msg *Message) {
func (w *wrapLineMessageProcessor) ProcessMessage(msg *Message) {
msg.Content = strings.Replace(msg.Content, `<br/>`, "\n", -1)
}

// 处理消息中的html转义字符
type unescapeHTMLMessageObserver struct{}
type unescapeHTMLMessageProcessor struct{}

func (u *unescapeHTMLMessageObserver) OnMessageReceive(msg *Message) {
func (u *unescapeHTMLMessageProcessor) ProcessMessage(msg *Message) {
msg.Content = html.UnescapeString(msg.Content)
}

// 处理消息中的emoji表情
type emojiMessageObserver struct{}
type emojiMessageProcessor struct{}

func (e *emojiMessageObserver) OnMessageReceive(msg *Message) {
func (e *emojiMessageProcessor) ProcessMessage(msg *Message) {
msg.Content = FormatEmoji(msg.Content)
}

// 尝试获取群聊中的消息的发送者
type tryToFindGroupMemberObserver struct{}
type tryToFindGroupMessageProcessor struct{}

func (t *tryToFindGroupMemberObserver) OnMessageReceive(msg *Message) {
func (t *tryToFindGroupMessageProcessor) ProcessMessage(msg *Message) {
if msg.IsSendByGroup() {
if msg.FromUserName == msg.Owner().UserName {
return
Expand All @@ -127,13 +127,13 @@ func (t *tryToFindGroupMemberObserver) OnMessageReceive(msg *Message) {
}

var (
defaultMessageObserver MessageObserver = MessageObserverGroup{
&messageRowContentObserver{},
&senderInGroupObserver{},
&atMessageObserver{},
&wrapLineMessageObserver{},
&unescapeHTMLMessageObserver{},
&emojiMessageObserver{},
&tryToFindGroupMemberObserver{},
defaultMessageProcessor MessageProcessor = MessageProcessorGroup{
&messageRowContentProcessor{},
&senderInGroupMessageProcessor{},
&atMessageProcessor{},
&wrapLineMessageProcessor{},
&unescapeHTMLMessageProcessor{},
&emojiMessageProcessor{},
&tryToFindGroupMessageProcessor{},
}
)

0 comments on commit afd0c22

Please sign in to comment.