Files
trbot/utils/plugin_utils/plugin_initializer.go
Hubert Chen 1dc9864f96 refactor udonese logger
use path to run ffmpeg
auto convent webm to gif if have ffmpeg path
fix callback query just return
2025-06-24 04:16:23 +08:00

57 lines
1.2 KiB
Go

package plugin_utils
import (
"context"
"github.com/rs/zerolog"
)
type Initializer struct {
Name string
Func func(ctx context.Context) 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) {
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)
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)
}