mirror of https://github.com/fluffle/goirc
66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"irc"
|
|
"fmt"
|
|
"os"
|
|
"github.com/kless/goconfig/config"
|
|
)
|
|
|
|
var nick, server, user string
|
|
var ssl bool
|
|
var channels []string
|
|
|
|
func main() {
|
|
parseConfig("rbot.conf")
|
|
|
|
c := irc.New(nick, user, user)
|
|
c.AddHandler("connected",
|
|
func(conn *irc.Conn, line *irc.Line) {
|
|
fmt.Println("Connected!")
|
|
for _, c := range channels {
|
|
conn.Join(c)
|
|
}
|
|
})
|
|
|
|
for {
|
|
fmt.Printf("Connecting to %s...\n", server)
|
|
if err := c.Connect(server, ssl, ""); err != nil {
|
|
fmt.Printf("Connection error: %s\n", err)
|
|
break
|
|
}
|
|
for err := range c.Err {
|
|
fmt.Printf("goirc error: %s\n", err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func parseConfig(confFile string) {
|
|
conf, err := config.ReadDefault(confFile)
|
|
if (err != nil) {
|
|
fmt.Printf("Config error: %s\n", err); os.Exit(1)
|
|
}
|
|
|
|
server, err = conf.String("DEFAULT", "server")
|
|
if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) }
|
|
|
|
nick, err = conf.String("DEFAULT", "nick")
|
|
if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) }
|
|
|
|
user, err = conf.String("DEFAULT", "user")
|
|
if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) }
|
|
|
|
ssl, err = conf.Bool("DEFAULT", "ssl")
|
|
if err != nil { fmt.Printf("Config error: %s\n", err); os.Exit(1) }
|
|
|
|
sections := conf.Sections()
|
|
channels = make([]string, len(sections)-1)
|
|
i := 0
|
|
for _, s := range sections {
|
|
if (s != "DEFAULT") {
|
|
channels[i] = s
|
|
i++
|
|
}
|
|
}
|
|
}
|