Change logrus to slog, add missing cmd/*, update gitignore
This commit is contained in:
89
cmd/aleesa-irc-go/main.go
Normal file
89
cmd/aleesa-irc-go/main.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"aleesa-irc-go/internal/irc"
|
||||
"aleesa-irc-go/internal/log"
|
||||
"aleesa-irc-go/internal/setting"
|
||||
|
||||
"github.com/go-redis/redis/v8"
|
||||
)
|
||||
|
||||
// Производит некоторую инициализацию перед запуском main().
|
||||
func init() {
|
||||
irc.ReadConfig()
|
||||
|
||||
// Проинициализируем мапку MODE-ами пользователей произвольным значением и удалим его
|
||||
var usersModes = map[string]map[string]map[string]bool{
|
||||
"user": {
|
||||
"mode": {
|
||||
"v": true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
irc.UserMode.Set("channel", usersModes)
|
||||
irc.UserMode.Delete("channel")
|
||||
|
||||
setting.DataDir = irc.Config.DataDir
|
||||
}
|
||||
|
||||
// Собственно, какбэ "точка входа" - основная процедура в нашем боте.
|
||||
func main() {
|
||||
// Main context
|
||||
var (
|
||||
ctx = context.Background()
|
||||
logfile *os.File
|
||||
err error
|
||||
)
|
||||
// Откроем лог и скормим его логгеру
|
||||
if irc.Config.Log != "" {
|
||||
logfile, err = os.OpenFile(irc.Config.Log, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
|
||||
|
||||
if err != nil {
|
||||
log.Errorf("Unable to open log file %s: %s", irc.Config.Log, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
} else {
|
||||
logfile = os.Stderr
|
||||
}
|
||||
|
||||
log.Init(irc.Config.Loglevel, logfile)
|
||||
|
||||
// Иницализируем redis-клиента
|
||||
irc.RedisClient = redis.NewClient(&redis.Options{
|
||||
Addr: fmt.Sprintf("%s:%d", irc.Config.Redis.Server, irc.Config.Redis.Port),
|
||||
})
|
||||
|
||||
log.Debugf("Lazy connect() to redis at %s:%d", irc.Config.Redis.Server, irc.Config.Redis.Port)
|
||||
irc.Subscriber = irc.RedisClient.Subscribe(ctx, irc.Config.Redis.MyChannel)
|
||||
redisMsgChan := irc.Subscriber.Channel()
|
||||
|
||||
go irc.IrcClientRun()
|
||||
go irc.IrcSend()
|
||||
go irc.IrcSendUnrestricted()
|
||||
|
||||
// Самое время поставить траппер сигналов
|
||||
signal.Notify(irc.SigChan,
|
||||
syscall.SIGINT,
|
||||
syscall.SIGTERM,
|
||||
syscall.SIGQUIT)
|
||||
|
||||
go irc.SigHandler()
|
||||
|
||||
// Обработчик событий от редиски
|
||||
for msg := range redisMsgChan {
|
||||
if irc.Shutdown {
|
||||
continue
|
||||
}
|
||||
|
||||
irc.RedisMsgParser(msg.Payload)
|
||||
}
|
||||
}
|
||||
|
||||
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */
|
||||
Reference in New Issue
Block a user