alexvanin
f0f31a8415
This commits adds new feature for galchedbot: video requests in the twitch chat via highlighted chat messages. This messages parsed by the bot and added to the video queue, that can be accessed by the dedicated web server. Video queue requires authorization based on random token added to the cookies.
97 lines
1.8 KiB
Go
97 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
|
|
"go.uber.org/fx"
|
|
|
|
"galched-bot/modules/discord"
|
|
"galched-bot/modules/grace"
|
|
"galched-bot/modules/settings"
|
|
"galched-bot/modules/subday"
|
|
"galched-bot/modules/twitchat"
|
|
"galched-bot/modules/web"
|
|
"galched-bot/modules/youtube"
|
|
)
|
|
|
|
type (
|
|
silentPrinter struct{}
|
|
|
|
appParam struct {
|
|
fx.In
|
|
|
|
Context context.Context
|
|
Discord *discord.Discord
|
|
Settings *settings.Settings
|
|
Chat *twitchat.TwitchIRC
|
|
Server *web.WebServer
|
|
}
|
|
)
|
|
|
|
func (s *silentPrinter) Printf(str string, i ...interface{}) {}
|
|
|
|
func start(p appParam) error {
|
|
var err error
|
|
|
|
log.Print("main: starting galched-bot v", p.Settings.Version)
|
|
|
|
err = p.Discord.Start()
|
|
if err != nil {
|
|
log.Print("discord: cannot start instance", err)
|
|
return err
|
|
}
|
|
log.Printf("main: discord instance running")
|
|
|
|
err = p.Chat.Start()
|
|
if err != nil {
|
|
log.Print("chat: cannot start instance", err)
|
|
return err
|
|
}
|
|
log.Printf("main: twitch chat instance running")
|
|
|
|
err = p.Server.Start()
|
|
if err != nil {
|
|
log.Print("web: cannot start instance", err)
|
|
return err
|
|
}
|
|
log.Printf("main: web server instance running")
|
|
|
|
log.Printf("main: — — —")
|
|
<-p.Context.Done()
|
|
log.Print("main: stopping galched-bot")
|
|
|
|
err = p.Server.Stop(p.Context)
|
|
if err != nil {
|
|
log.Print("web: cannot stop instance", err)
|
|
return err
|
|
}
|
|
|
|
err = p.Chat.Stop()
|
|
if err != nil {
|
|
log.Print("chat: cannot stop instance", err)
|
|
return err
|
|
}
|
|
|
|
err = p.Discord.Stop()
|
|
if err != nil {
|
|
log.Print("discord: cannot stop instance", err)
|
|
return err
|
|
}
|
|
|
|
log.Print("main: galched bot successfully stopped")
|
|
return nil
|
|
}
|
|
|
|
func main() {
|
|
var err error
|
|
app := fx.New(
|
|
fx.Logger(new(silentPrinter)),
|
|
fx.Provide(settings.New, grace.New, discord.New, subday.New, twitchat.New, web.New, youtube.New),
|
|
fx.Invoke(start))
|
|
|
|
err = app.Start(context.Background())
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|