Files
trbot/utils/plugin_utils/plugin_initializer.go
Hubert Chen f1a106c6e8 add bot instance when register plugins
slash start command:
    fix notes
    remove prefix argument underline suffix check
2025-08-28 05:53:28 +08:00

58 lines
1.2 KiB
Go

package plugin_utils
import (
"context"
"github.com/go-telegram/bot"
"github.com/rs/zerolog"
)
type Initializer struct {
Name string
Func func(ctx context.Context, thebot *bot.Bot) error
}
func AddInitializer(initializers ...Initializer) int {
if AllPlugins.Initializer == nil {
AllPlugins.Initializer = []Initializer{}
}
var pluginCount int
for _, initializer := range initializers {
AllPlugins.Initializer = append(AllPlugins.Initializer, initializer)
pluginCount++
}
return pluginCount
}
func RunPluginInitializers(ctx context.Context, thebot *bot.Bot) {
logger := zerolog.Ctx(ctx)
count := len(AllPlugins.Initializer)
successCount := 0
for _, initializer := range AllPlugins.Initializer {
if initializer.Func == nil {
logger.Warn().
Str("pluginName", initializer.Name).
Msg("Plugin has no initialize function, skipping")
continue
}
err := initializer.Func(ctx, thebot)
if err != nil {
logger.Error().
Err(err).
Str("pluginName", initializer.Name).
Msg("Failed to initialize plugin")
continue
} else {
logger.Info().
Str("pluginName", initializer.Name).
Msg("Plugin initialize success")
successCount++
}
}
logger.Info().Msgf("Run (%d/%d) initializer success", successCount, count)
}