~xenrox/twitch-bot

44d21de04fc716c943a001c1d41c248bc437914c — Thorben Günther 1 year, 6 months ago e444225
Switch to own logger package
6 files changed, 20 insertions(+), 15 deletions(-)

M bot.go
M config.go
M go.mod
M go.sum
M main.go
M static_commands.go
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