M bot.go => bot.go +4 -3
@@ 2,9 2,9 @@ package main
import (
"errors"
- "log"
"os"
+ "git.xenrox.net/~xenrox/go-log"
"git.xenrox.net/~xenrox/twitch-bot/database"
"github.com/gempir/go-twitch-irc/v3"
)
@@ 15,6 15,7 @@ type bot struct {
client *twitch.Client
cfg *config
db *database.DB
+ logger *log.Logger
}
func (b *bot) isAuthorized(user *twitch.User, channel string) bool {
@@ 33,9 34,9 @@ func (b *bot) say(msg *twitch.PrivateMessage, text string) {
func (b *bot) shutdown(sig os.Signal) {
if err := b.client.Disconnect(); err != nil {
- log.Printf("error while shutting down: %v\n", err)
+ b.logger.Errorf("shutdown: %v", err)
}
if err := b.db.Close(); err != nil {
- log.Printf("error while shutting down: %v\n", err)
+ b.logger.Errorf("shutdown: %v", err)
}
}
M config.go => config.go +3 -3
@@ 2,9 2,9 @@ package main
import (
"fmt"
- "log"
"git.sr.ht/~emersion/go-scfg"
+ "git.xenrox.net/~xenrox/go-log"
)
type config struct {
@@ 20,7 20,7 @@ type channel struct {
ModsAreAdmins bool
}
-func readConfig(path string) (*config, error) {
+func readConfig(path string, logger *log.Logger) (*config, error) {
cfg, err := scfg.Load(path)
if err != nil {
return nil, err
@@ 58,7 58,7 @@ func readConfig(path string) (*config, error) {
return nil, err
}
} else {
- log.Println("Faceit: No API key found. Faceit support disabled.")
+ logger.Warningf("Faceit: No API key found. Faceit support disabled.")
}
channels := make(map[string]channel)
M go.mod => go.mod +1 -0
@@ 4,6 4,7 @@ go 1.19
require (
git.sr.ht/~emersion/go-scfg v0.0.0-20211215104734-c2c7a15d6c99
+ git.xenrox.net/~xenrox/go-log v0.0.0-20221008204844-850893cd5db1
github.com/gempir/go-twitch-irc/v3 v3.2.0
github.com/lib/pq v1.10.7
)
M go.sum => go.sum +2 -0
@@ 1,5 1,7 @@
git.sr.ht/~emersion/go-scfg v0.0.0-20211215104734-c2c7a15d6c99 h1:1s8n5uisqkR+BzPgaum6xxIjKmzGrTykJdh+Y3f5Xao=
git.sr.ht/~emersion/go-scfg v0.0.0-20211215104734-c2c7a15d6c99/go.mod h1:t+Ww6SR24yYnXzEWiNlOY0AFo5E9B73X++10lrSpp4U=
+git.xenrox.net/~xenrox/go-log v0.0.0-20221008204844-850893cd5db1 h1:SZdAg5cnjrA+DlnNAB0+TCM+PkGxMIjq9nK2TIOMfbc=
+git.xenrox.net/~xenrox/go-log v0.0.0-20221008204844-850893cd5db1/go.mod h1:d98WFDHGpxaEThKue5CfGtr9OrWgbaApprt3GH+OM4s=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/gempir/go-twitch-irc/v3 v3.2.0 h1:ENhsa7RgBE1GMmDqe0iMkvcSYfgw6ZsXilt+sAg32/U=
M main.go => main.go +9 -7
@@ 3,12 3,12 @@ package main
import (
"errors"
"flag"
- "log"
"os"
"os/signal"
"strings"
"syscall"
+ "git.xenrox.net/~xenrox/go-log"
"git.xenrox.net/~xenrox/twitch-bot/database"
"github.com/gempir/go-twitch-irc/v3"
)
@@ 21,18 21,20 @@ func main() {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
- cfg, err := readConfig(configPath)
+ logger := log.NewDefaultLogger()
+
+ cfg, err := readConfig(configPath, logger)
if err != nil {
- log.Fatal(err)
+ logger.Fatalf("config: %v", err)
}
db, err := database.Open(cfg.DBConnectionString)
if err != nil {
- log.Fatal(err)
+ logger.Fatalf("database: %v", err)
}
client := twitch.NewClient(cfg.UserName, cfg.Token)
- bot := &bot{client: client, cfg: cfg, db: db}
+ bot := &bot{client: client, cfg: cfg, db: db, logger: logger}
client.OnPrivateMessage(func(message twitch.PrivateMessage) {
parsed := strings.Split(message.Message, " ")
@@ 57,7 59,7 @@ func main() {
} else if errors.Is(err, errTooShort) {
bot.say(&message, "The command you entered is too short.")
} else if err != nil {
- log.Printf("command %v (channel %s) failed: %v\n", parsed, message.Channel, err)
+ logger.Errorf("channel %q command %v failed: %v", message.Channel, parsed, err)
}
}
})
@@ 69,7 71,7 @@ func main() {
go func() {
err = client.Connect()
if err != nil {
- log.Fatal(err)
+ logger.Fatalf("connecting: %v", err)
}
}()
M static_commands.go => static_commands.go +1 -2
@@ 4,7 4,6 @@ import (
"database/sql"
"errors"
"fmt"
- "log"
"strings"
"github.com/gempir/go-twitch-irc/v3"
@@ 128,7 127,7 @@ func (b *bot) lookupCommand(name string, msg *twitch.PrivateMessage) error {
err := b.db.DB.QueryRow(query, msg.Channel, name).Scan(&response)
if errors.Is(err, sql.ErrNoRows) {
- log.Printf("command %q not found (channel %s)\n", name, msg.Channel)
+ b.logger.Infof("channel %q command %q not found", msg.Channel, name)
return nil
} else if err != nil {
return err