Files
mygoTgChanBot/internal/toc/renderer.go
2026-02-05 13:57:20 +08:00

52 lines
1.1 KiB
Go

package toc
import (
"fmt"
"html"
"strings"
)
func (m *Manager) Render() (string, error) {
categories, err := m.storage.ListCategories()
if err != nil {
return "", err
}
entriesByCategory, err := m.storage.GetEntriesByCategory()
if err != nil {
return "", err
}
var sb strings.Builder
sb.WriteString("📚 <b>频道目录</b>\n")
sb.WriteString("━━━━━━━━━━━━━━━\n\n")
if len(categories) == 0 {
sb.WriteString("<i>暂无分类</i>")
return sb.String(), nil
}
for _, cat := range categories {
entries := entriesByCategory[cat.Name]
sb.WriteString(fmt.Sprintf("📁 <b>%s</b>", html.EscapeString(cat.Name)))
if len(entries) > 0 {
sb.WriteString(fmt.Sprintf(" (%d)", len(entries)))
}
sb.WriteString("\n")
if len(entries) == 0 {
sb.WriteString(" <i>暂无内容</i>\n")
} else {
for _, entry := range entries {
sb.WriteString(fmt.Sprintf(" • <a href=\"%s\">%s</a>\n", entry.Link, html.EscapeString(entry.Title)))
}
}
sb.WriteString("\n")
}
sb.WriteString("━━━━━━━━━━━━━━━\n")
return sb.String(), nil
}