0

Change logrus to slog, add missing cmd/*, update gitignore

This commit is contained in:
eleksir
2025-10-12 13:48:55 +03:00
parent d527c4ab8f
commit 351695a7c5
37 changed files with 207 additions and 3146 deletions

89
cmd/aleesa-irc-go/main.go Normal file
View 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: */