mirror of
https://github.com/woodchen-ink/Oapi-Feishu.git
synced 2025-07-18 13:52:09 +08:00
58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
|
|
"start-feishubot/handlers"
|
|
"start-feishubot/initialization"
|
|
"start-feishubot/services/openai"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
sdkginext "github.com/larksuite/oapi-sdk-gin"
|
|
larkcard "github.com/larksuite/oapi-sdk-go/v3/card"
|
|
"github.com/larksuite/oapi-sdk-go/v3/event/dispatcher"
|
|
larkim "github.com/larksuite/oapi-sdk-go/v3/service/im/v1"
|
|
"github.com/spf13/pflag"
|
|
)
|
|
|
|
var (
|
|
cfg = pflag.StringP("config", "c", "./config.yaml", "apiserver config file path.")
|
|
)
|
|
|
|
func main() {
|
|
initialization.InitRoleList()
|
|
pflag.Parse()
|
|
config := initialization.LoadConfig(*cfg)
|
|
initialization.LoadLarkClient(*config)
|
|
gpt := openai.NewChatGPT(*config)
|
|
handlers.InitHandlers(gpt, *config)
|
|
|
|
eventHandler := dispatcher.NewEventDispatcher(
|
|
config.FeishuAppVerificationToken, config.FeishuAppEncryptKey).
|
|
OnP2MessageReceiveV1(handlers.Handler).
|
|
OnP2MessageReadV1(func(ctx context.Context, event *larkim.P2MessageReadV1) error {
|
|
return handlers.ReadHandler(ctx, event)
|
|
})
|
|
|
|
cardHandler := larkcard.NewCardActionHandler(
|
|
config.FeishuAppVerificationToken, config.FeishuAppEncryptKey,
|
|
handlers.CardHandler())
|
|
|
|
r := gin.Default()
|
|
r.GET("/ping", func(c *gin.Context) {
|
|
c.JSON(200, gin.H{
|
|
"message": "pong",
|
|
})
|
|
})
|
|
r.POST("/webhook/event",
|
|
sdkginext.NewEventHandlerFunc(eventHandler))
|
|
r.POST("/webhook/card",
|
|
sdkginext.NewCardActionHandlerFunc(
|
|
cardHandler))
|
|
|
|
if err := initialization.StartServer(*config, r); err != nil {
|
|
log.Fatalf("failed to start server: %v", err)
|
|
}
|
|
}
|