Files
backend/cmds/dcbot.go
Yi-Ting Shih 47f09b733a
All checks were successful
Go test / run-go-vet (push) Successful in 20s
Go test / check-swagger-up-to-date (push) Successful in 9s
Go test / run-go-test (push) Successful in 47s
Go test / cleanup-go-test (push) Successful in 4s
Go test / release-image (push) Successful in 3m35s
Refactor: migrate discordbot
2025-12-13 04:58:12 +08:00

76 lines
1.8 KiB
Go

package cmds
import (
"fmt"
"os"
"os/signal"
"syscall"
"gitea.konchin.com/go2025/backend/bot"
"gitea.konchin.com/go2025/backend/bot/commands"
"gitea.konchin.com/go2025/backend/tracing"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"go.uber.org/zap"
)
var dcbotCmd = &cobra.Command{
Use: "dcbot",
Run: func(cmd *cobra.Command, args []string) {
ctx := cmd.Context()
appname := "go2025-dcbot"
tracing.InitTracer(appname)
if viper.GetString("uptrace-dsn") != "" {
tracing.InitUptrace(appname)
defer tracing.DeferUptrace(ctx)
}
// Initialize bot
discordBot, err := bot.New()
if err != nil {
tracing.Logger.Ctx(ctx).
Panic("failed to create bot",
zap.Error(err))
panic(err)
}
discordBot.RegisterCommand(commands.NewEchoCommand)
discordBot.RegisterCommand(commands.NewGreetCommand)
discordBot.RegisterCommand(commands.NewPingCommand)
discordBot.RegisterCommand(commands.NewWebCommand)
// Start bot
if err := discordBot.Start(); err != nil {
tracing.Logger.Ctx(ctx).
Panic("failed to start bot",
zap.Error(err))
panic(err)
}
fmt.Println("Bot is now running. Press CTRL-C to exit.")
defer discordBot.Stop()
// Wait for interrupt signal
sc := make(chan os.Signal, 1)
signal.Notify(sc,
syscall.SIGINT, syscall.SIGTERM, os.Interrupt)
<-sc
},
}
func init() {
dcbotCmd.Flags().
String("preshared-key", "poop", "preshared key")
dcbotCmd.Flags().
String("discord-bot-token", "", "discord bot token")
dcbotCmd.Flags().
String("api-endpoint", "http://backend:8080", "api endpoint")
dcbotCmd.Flags().
String("external-url", "http://localhost:8080", "external url")
dcbotCmd.Flags().
Bool("zap-production", true, "Toggle production log format")
dcbotCmd.Flags().
String("uptrace-dsn", "", "Uptrace DSN (disabled by default)")
}