mirror of
https://github.com/songquanpeng/message-pusher.git
synced 2025-09-26 20:21:22 +08:00

* feat: group message support specify target * chore: remove text for customized descriptions like i18n * fix: update priority --------- Co-authored-by: JustSong <songquanpeng@foxmail.com>
42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
package channel
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"message-pusher/model"
|
|
"strings"
|
|
)
|
|
|
|
func SendGroupMessage(message *model.Message, user *model.User, channel_ *model.Channel) error {
|
|
subChannels := strings.Split(channel_.AppId, "|")
|
|
var subTargets []string
|
|
if message.To != "" {
|
|
subTargets = strings.Split(message.To, "|")
|
|
} else {
|
|
subTargets = strings.Split(channel_.AccountId, "|")
|
|
}
|
|
if len(subChannels) != len(subTargets) {
|
|
return errors.New("无效的群组消息配置,子通道数量与子目标数量不一致")
|
|
}
|
|
errMessage := ""
|
|
for i := 0; i < len(subChannels); i++ {
|
|
message.To = subTargets[i]
|
|
message.Channel = subChannels[i]
|
|
subChannel, err := model.GetChannelByName(subChannels[i], user.Id)
|
|
if err != nil {
|
|
return errors.New("获取群组消息子通道失败:" + err.Error())
|
|
}
|
|
if subChannel.Type == model.TypeGroup {
|
|
return errors.New("群组消息子通道不能是群组消息")
|
|
}
|
|
err = SendMessage(message, user, subChannel)
|
|
if err != nil {
|
|
errMessage += fmt.Sprintf("发送群组消息子通道 %s 失败:%s\n", subChannels[i], err.Error())
|
|
}
|
|
}
|
|
if errMessage != "" {
|
|
return errors.New(errMessage)
|
|
}
|
|
return nil
|
|
}
|