在使用 sdk 发送文本消息使用 larkim.MessageText 生成消息内容时 有一个体验不好的地方
twgcode opened this issue · 0 comments
twgcode commented
在使用 sdk 发送文本消息使用 larkim.MessageText 生成消息内容时 有一个体验不好的地方,业务代码
errInfo 会有换行符 导致 生成的消息内容不符合要求,然后发送消息直接失败
我看 larkim.MessageText 使用的这种构造方式
能不能改成类似这样的
import (
"encoding/json"
"strings"
)
type MessageText struct {
builder strings.Builder
}
func NewMessageTextBuilder() *MessageText {
m := &MessageText{}
return m
}
func (t *MessageText) Text(text string) *MessageText {
t.builder.WriteString(text)
return t
}
func (t *MessageText) TextLine(text string) *MessageText {
t.builder.WriteString(text)
t.builder.WriteString("\n")
return t
}
func (t *MessageText) Line() *MessageText {
t.builder.WriteString("\n")
return t
}
func (t *MessageText) AtUser(userId, name string) *MessageText {
t.builder.WriteString(`<at user_id="`)
t.builder.WriteString(userId)
t.builder.WriteString(`">`)
t.builder.WriteString(name)
t.builder.WriteString("</at>")
return t
}
func (t *MessageText) AtAll() *MessageText {
t.builder.WriteString(`<at user_id="all">所有人</at>`)
return t
}
func (t *MessageText) Build() (data string) {
var tmp []byte
tmp, _ = json.Marshal(map[string]string{"text": t.builder.String()})
data = string(tmp) // TODO 后面优化成高效转化
return
}
这样 感觉使用起来会舒服很多