diff --git a/models/floor.go b/models/floor.go index c12e81b..d1b467f 100644 --- a/models/floor.go +++ b/models/floor.go @@ -3,6 +3,7 @@ package models import ( "fmt" "time" + "regexp" "treehole_next/utils/sensitive" "github.com/opentreehole/go-common" @@ -461,6 +462,18 @@ func (floor *Floor) ModifyLike(tx *gorm.DB, userID int, likeOption int8) (err er Send Notifications ******************/ +func cleanNotificationDescription(content string) string { + // Remove "##\n" prefix + content = regexp.MustCompile(`^##\d+\n`).ReplaceAllString(content, "") + + // Replace formulas, stickers, and images + content = regexp.MustCompile(`\${1,2}.*?\${1,2}`).ReplaceAllString(content, "[公式]") + content = regexp.MustCompile(`!\[\]\(dx_\S+\)`).ReplaceAllString(content, "[表情]") + content = regexp.MustCompile(`!\[.*?\]\(.*?\)`).ReplaceAllString(content, "[图片]") + + return content +} + func (floor *Floor) SendSubscription(tx *gorm.DB) Notification { // get recipients var tmpIDs []int @@ -481,7 +494,7 @@ func (floor *Floor) SendSubscription(tx *gorm.DB) Notification { message := Notification{ Data: floor, Recipients: userIDs, - Description: floor.Content, + Description: cleanNotificationDescription(floor.Content), Title: "您关注的帖子有新回复", Type: MessageTypeFavorite, URL: fmt.Sprintf("/api/floors/%d", floor.ID), @@ -508,7 +521,7 @@ func (floor *Floor) SendReply(tx *gorm.DB) Notification { message := Notification{ Data: floor, Recipients: userIDs, - Description: floor.Content, + Description: cleanNotificationDescription(floor.Content), Title: "您的内容有新回复", Type: MessageTypeReply, URL: fmt.Sprintf("/api/floors/%d", floor.ID), @@ -533,7 +546,7 @@ func (floor *Floor) SendMention(_ *gorm.DB) Notification { message := Notification{ Data: floor, Recipients: userIDs, - Description: floor.Content, + Description: cleanNotificationDescription(floor.Content), Title: "您的内容被引用了", Type: MessageTypeMention, URL: fmt.Sprintf("/api/floors/%d", floor.ID), @@ -550,7 +563,7 @@ func (floor *Floor) SendModify(_ *gorm.DB) error { message := Notification{ Data: floor, Recipients: userIDs, - Description: floor.Content, + Description: cleanNotificationDescription(floor.Content), Title: "您的内容被管理员修改了", Type: MessageTypeModify, URL: fmt.Sprintf("/api/floors/%d", floor.ID),