refactor: modernize codebase for Go 1.26 and fix adapter issues
- Upgrade Go version from 1.24 to 1.26.1 with updated dependencies
- Replace interface{} with any type throughout codebase
- Add message deduplication in OneBot11 adapter to prevent duplicate event processing
- URL-encode access token in WebSocket connections to handle special characters
- Remove duplicate bot startup hooks in DI providers (now handled by botManager.StartAll)
- Use slices.Clone and errgroup.Go patterns for cleaner concurrent code
- Apply omitzero JSON tags for optional fields (Go 1.24+ feature)
This commit is contained in:
@@ -149,22 +149,9 @@ func ProvideMilkyBots(cfg *config.Config, logger *zap.Logger, eventBus *engine.E
|
||||
bot := milky.NewBot(botCfg.ID, milkyCfg, eventBus, wsManager, logger)
|
||||
botManager.Add(bot)
|
||||
|
||||
// 注意:不在这里启动连接,由 RegisterLifecycleHooks 中的 botManager.StartAll() 统一启动
|
||||
// 这样避免重复启动的问题
|
||||
lc.Append(fx.Hook{
|
||||
OnStart: func(ctx context.Context) error {
|
||||
logger.Info("Starting Milky bot", zap.String("bot_id", botCfg.ID))
|
||||
// 在后台启动连接,失败时只记录错误,不终止应用
|
||||
go func() {
|
||||
if err := bot.Connect(context.Background()); err != nil {
|
||||
logger.Error("Failed to connect Milky bot, will retry in background",
|
||||
zap.String("bot_id", botCfg.ID),
|
||||
zap.Error(err))
|
||||
// 可以在这里实现重试逻辑
|
||||
} else {
|
||||
logger.Info("Milky bot connected successfully", zap.String("bot_id", botCfg.ID))
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
},
|
||||
OnStop: func(ctx context.Context) error {
|
||||
logger.Info("Stopping Milky bot", zap.String("bot_id", botCfg.ID))
|
||||
return bot.Disconnect(ctx)
|
||||
@@ -200,22 +187,9 @@ func ProvideOneBot11Bots(cfg *config.Config, logger *zap.Logger, wsManager *net.
|
||||
bot := onebot11.NewBot(botCfg.ID, ob11Cfg, logger, wsManager, eventBus)
|
||||
botManager.Add(bot)
|
||||
|
||||
// 注意:不在这里启动连接,由 RegisterLifecycleHooks 中的 botManager.StartAll() 统一启动
|
||||
// 这样避免重复启动的问题
|
||||
lc.Append(fx.Hook{
|
||||
OnStart: func(ctx context.Context) error {
|
||||
logger.Info("Starting OneBot11 bot", zap.String("bot_id", botCfg.ID))
|
||||
// 在后台启动连接,失败时只记录错误,不终止应用
|
||||
go func() {
|
||||
if err := bot.Connect(context.Background()); err != nil {
|
||||
logger.Error("Failed to connect OneBot11 bot, will retry in background",
|
||||
zap.String("bot_id", botCfg.ID),
|
||||
zap.Error(err))
|
||||
// 可以在这里实现重试逻辑
|
||||
} else {
|
||||
logger.Info("OneBot11 bot connected successfully", zap.String("bot_id", botCfg.ID))
|
||||
}
|
||||
}()
|
||||
return nil
|
||||
},
|
||||
OnStop: func(ctx context.Context) error {
|
||||
logger.Info("Stopping OneBot11 bot", zap.String("bot_id", botCfg.ID))
|
||||
return bot.Disconnect(ctx)
|
||||
|
||||
Reference in New Issue
Block a user