61 lines
1.1 KiB
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)
|
|
}
|
|
}
|