package main import ( "fmt" "dim13.org/rss" irc "github.com/fluffle/goirc/client" ) var Feed = map[string]string{ "News": `https://www.linux.org.ru/section-rss.jsp?section=1`, "Forum": `https://www.linux.org.ru/section-rss.jsp?section=2`, "Gallery": `https://www.linux.org.ru/section-rss.jsp?section=3`, "OpenNET": `http://www.opennet.ru/opennews/opennews_all_noadv.rss`, "Undeadly": `http://undeadly.org/cgi?action=rss`, } type RSS struct{ Command } func (v RSS) Handle(conn *irc.Conn, line *irc.Line) { news, err := rss.Fetch(v.Arg) if err != nil { conn.Privmsg(line.Target(), err.Error()) return } if line.Public() && len(news.Channel.Items) > 3 { news.Channel.Items = news.Channel.Items[:3] } for n, i := range news.Channel.Items { s := fmt.Sprintf("%2d. %v - %v", n+1, i.Title, i.Link) conn.Privmsg(line.Target(), s) } } func init() { Register("news", &RSS{ Command{ Help: "LOR news (msg private to see all)", Arg: Feed["News"], }, }) Register("forum", &RSS{ Command{ Help: "LOR forum (msg private to see all)", Arg: Feed["Forum"], }, }) Register("gallery", &RSS{ Command{ Help: "LOR gallery (msg private to see all)", Arg: Feed["Gallery"], }, }) Register("bsd", &RSS{ Command{ Help: "Undeadly news (msg private to see all)", Arg: Feed["Undeadly"], }, }) Register("opennet", &RSS{ Command{ Help: "OpenNET news (msg private to see all)", Arg: Feed["OpenNET"], }, }) }