summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-07-09 18:07:09 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-07-09 18:07:09 +0200
commit62234560e59929ddde351750434a00d926d09288 (patch)
treea47e5e1a775641bb36560097f24f67ac1f8af782 /main.go
parent04a3c5398af8ccabafafe3e684117d6e57ffe7b2 (diff)
Simiplify
Diffstat (limited to 'main.go')
-rw-r--r--main.go45
1 files changed, 26 insertions, 19 deletions
diff --git a/main.go b/main.go
index ad4f8a8..65be185 100644
--- a/main.go
+++ b/main.go
@@ -8,7 +8,8 @@ import (
"strings"
"time"
- tdr "dim13.org/theo"
+ "dim13.org/rss"
+ "dim13.org/theo"
irc "github.com/fluffle/goirc/client"
)
@@ -18,6 +19,11 @@ var (
name = flag.String("name", "mincom", "Bots Name")
)
+const (
+ lor = `https://www.linux.org.ru/section-rss.jsp?section=1`
+ undeadly = `http://undeadly.org/cgi?action=rss`
+)
+
type Commander interface {
irc.Handler
fmt.Stringer
@@ -55,35 +61,37 @@ func (_ Last) Handle(conn *irc.Conn, line *irc.Line) {
func (v Theo) String() string { return string(v) }
func (_ Theo) Handle(conn *irc.Conn, line *irc.Line) {
- conn.Privmsg(line.Target(), tdr.Theo())
+ conn.Privmsg(line.Target(), theo.Theo())
}
func (v News) String() string { return string(v) }
func (_ News) Handle(conn *irc.Conn, line *irc.Line) {
- n, err := FetchNews(lor)
+ news, err := rss.Fetch(lor)
if err != nil {
conn.Privmsg(line.Target(), err.Error())
return
}
if line.Public() {
- n = n[:3]
+ news.Channel.Items = news.Channel.Items[:3]
}
- for _, s := range n {
+ for n, i := range news.Channel.Items {
+ s := fmt.Sprintf("%2d. %v", n+1, i.Title)
conn.Privmsg(line.Target(), s)
}
}
func (v BSD) String() string { return string(v) }
func (_ BSD) Handle(conn *irc.Conn, line *irc.Line) {
- n, err := FetchNews(undeadly)
+ news, err := rss.Fetch(undeadly)
if err != nil {
conn.Privmsg(line.Target(), err.Error())
return
}
if line.Public() {
- n = n[:3]
+ news.Channel.Items = news.Channel.Items[:3]
}
- for _, s := range n {
+ for n, i := range news.Channel.Items {
+ s := fmt.Sprintf("%2d. %v", n+1, i.Title)
conn.Privmsg(line.Target(), s)
}
}
@@ -98,27 +106,26 @@ func (_ Help) Handle(conn *irc.Conn, line *irc.Line) {
func privmsg(conn *irc.Conn, line *irc.Line) {
log.Println(line)
- txt := line.Text()
+ f := strings.Fields(line.Text())
+
if line.Public() && line.Nick != conn.Me().Nick {
buffer.Value = line
buffer = buffer.Next()
}
+
// lookup command
- if f := strings.Fields(txt); len(f) > 0 {
+ if len(f) > 0 {
if c, ok := commands[f[0]]; ok {
c.Handle(conn, line)
}
}
+
// extract single link and fetch title
- if strings.Contains(txt, "http") {
- if i := strings.Index(txt, "http"); i >= 0 {
- txt = txt[i:]
- }
- if i := strings.IndexAny(txt, " ,"); i > 0 {
- txt = txt[:i]
- }
- if t, err := FetchTitle(txt); err == nil {
- conn.Privmsg(line.Target(), t)
+ for _, v := range f {
+ if strings.HasPrefix(v, "http") {
+ if t, err := FetchTitle(v); err == nil {
+ conn.Privmsg(line.Target(), t)
+ }
}
}
}