boddle/bot.go
2022-02-03 21:08:20 +00:00

57 lines
1 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)
}
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))
}
}