63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"log"
|
|
"fmt"
|
|
"net"
|
|
"time"
|
|
configo "github.com/distributedio/configo"
|
|
_ "github.com/mattn/go-sqlite3"
|
|
)
|
|
|
|
var dead = true
|
|
|
|
type Config struct {
|
|
Name string `cfg:"name; boddle; printableascii; IRC nick of bot"`
|
|
Channels []string `cfg:"channels; required; printableascii; Channel list to join to"`
|
|
Server string `cfg:"server; required; netaddr; Server name to connect to"`
|
|
Database string `cfg:"database; ./boddle.db; path; Path to database"`
|
|
}
|
|
|
|
type bot struct {
|
|
Conf Config
|
|
conn net.Conn
|
|
}
|
|
|
|
func main() {
|
|
LOG_init()
|
|
|
|
var boddle bot
|
|
if err := configo.Load("./boddle.toml", &boddle.Conf); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
// boddle := bot {
|
|
// name: "boddle",
|
|
// channel: []string{"#faui2k16", "#fau", "#sigbike", "#sigfreibad"},
|
|
// port: 6667,
|
|
// server: "irc.fau.de",
|
|
// }
|
|
|
|
LOG_INFO.Println("bot started!")
|
|
|
|
var botchan <-chan []byte
|
|
var line []byte
|
|
dead = true
|
|
|
|
for {
|
|
if dead {
|
|
LOG_WARN.Println("died.")
|
|
for {
|
|
botchan = connect(boddle)
|
|
if botchan != nil {
|
|
break
|
|
}
|
|
time.Sleep(10 * time.Second)
|
|
}
|
|
LOG_INFO.Println("reconnected.")
|
|
dead = false
|
|
}
|
|
line = <-botchan
|
|
fmt.Fprintf(os.Stderr, string(line))
|
|
}
|
|
}
|