MCPcopy Create free account
hub / github.com/FloatTech/ZeroBot-Plugin-Playground / formatRssViewToMessagesSlice

Function formatRssViewToMessagesSlice

plugin/rsshub/view.go:21–55  ·  view source on GitHub ↗

formatRssViewToMessagesSlice 格式化RssClientView为消息切片

(view *domain.RssClientView)

Source from the content-addressed store, hash-verified

19
20// formatRssViewToMessagesSlice 格式化RssClientView为消息切片
21func formatRssViewToMessagesSlice(view *domain.RssClientView) ([]message.Message, error) {
22 // 取前20条
23 cts := view.Contents
24 if len(cts) > 20 {
25 cts = cts[:20]
26 }
27 // 2n+1条消息
28 fv := make([]message.Message, len(cts)*2+1)
29 // 订阅源头图
30 toastPic, err := text.RenderToBase64(fmt.Sprintf("%s\n\n\n%s\n\n\n更新时间:%v\n\n\n",
31 view.Source.Title, view.Source.Link, view.Source.UpdatedParsed.Local().Format(time.DateTime)),
32 text.SakuraFontFile, 1200, 40)
33 if err != nil {
34 return nil, err
35 }
36 fv[0] = message.Message{message.Image("base64://" + binary.BytesToString(toastPic))}
37 // 元素信息
38 for idx, item := range cts {
39 contentStr := fmt.Sprintf("%s\n\n\n", item.Title)
40 // Date为空时不显示
41 if !item.Date.IsZero() {
42 contentStr += fmt.Sprintf("更新时间:\n%v\n", item.Date.Local().Format(time.DateTime))
43 }
44 var content []byte
45 content, err = text.RenderToBase64(contentStr, text.SakuraFontFile, 1200, 40)
46 if err != nil {
47 logrus.WithError(err).Error("RssHub订阅姬渲染图片失败")
48 continue
49 }
50 itemMessagePic := message.Message{message.Image("base64://" + binary.BytesToString(content))}
51 fv[2*idx+1] = itemMessagePic
52 fv[2*idx+2] = message.Message{message.Text(item.Link)}
53 }
54 return fv, nil
55}
56
57// newRssSourcesMsg Rss订阅源列表
58func newRssSourcesMsg(ctx *zero.Ctx, view []*domain.RssClientView) (message.Message, error) {

Callers 2

newRssSourcesMsgFunction · 0.85
newRssDetailsMsgFunction · 0.85

Calls 1

FormatMethod · 0.80

Tested by

no test coverage detected