package milky import ( "cellbot/pkg/net" "fmt" "go.uber.org/zap" ) // WebhookServer Webhook 服务器 // 使用 pkg/net.SimpleWebhookServer 实现,避免重复的 fasthttp 代码 type WebhookServer struct { server *net.SimpleWebhookServer logger *zap.Logger addr string } // NewWebhookServer 创建 Webhook 服务器 func NewWebhookServer(addr string, accessToken string, logger *zap.Logger) *WebhookServer { eventChan := make(chan []byte, 100) config := net.SimpleWebhookConfig{ Addr: addr, AccessToken: accessToken, EventChannel: eventChan, } return &WebhookServer{ server: net.NewSimpleWebhookServer(config, logger), logger: logger.Named("webhook-server"), addr: addr, } } // Start 启动服务器 func (s *WebhookServer) Start() error { s.logger.Info("Starting webhook server", zap.String("addr", s.addr)) if err := s.server.Start(); err != nil { return fmt.Errorf("failed to start webhook server: %w", err) } return nil } // Events 获取事件通道 func (s *WebhookServer) Events() <-chan []byte { return s.server.Events() } // Stop 停止服务器 func (s *WebhookServer) Stop() error { s.logger.Info("Stopping webhook server") if err := s.server.Stop(); err != nil { return fmt.Errorf("failed to stop webhook server: %w", err) } return nil }