notbot/notifier.go

61 lines
1.1 KiB
Go

package main
import (
"flag"
"log"
"net"
"gopkg.in/irc.v3"
)
var (
channels arrayFlags
server string
nickname string
password string
user string
name string
)
func init() {
flag.StringVar(&server, "server", "irc.libera.chat:6667", "Server to connect to")
flag.StringVar(&nickname, "nickname", "notbot", "Bot nickname")
flag.StringVar(&password, "password", "", "Bot nickserv password")
flag.StringVar(&user, "user", "bot", "Bot user parameter")
flag.StringVar(&name, "name", "bot notbot", "Bot real name parameter")
flag.Var(&channels, "channels", "Channel to join; may be specified multiple times")
}
func main() {
done := make([]chan bool, len(Runners.list))
flag.Parse()
conn, err := net.Dial("tcp", server)
if err != nil {
log.Fatalln(err)
}
config := irc.ClientConfig{
Nick: nickname,
Pass: password,
User: user,
Name: name,
Handler: irc.HandlerFunc(handlerFactory(Dispatchers.list)),
}
client := irc.NewClient(conn, config)
for i, runner := range Runners.list {
go runner(client, done[i])
}
err = client.Run()
if err != nil {
for _, ch := range done {
ch <- true
}
log.Fatalln(err)
}
}