Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 6m27s
feat: 添加版本和构建时间变量 fix: 修正短信队列类型注释错误 style: 清理未使用的代码和测试文件 docs: 更新安装文档中的下载链接 chore: 迁移数据库脚本添加日志和订阅配置
37 lines
1.4 KiB
Go
37 lines
1.4 KiB
Go
package handler
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
|
|
"github.com/perfect-panel/server/internal/logic/telegram"
|
|
"github.com/perfect-panel/server/internal/svc"
|
|
"github.com/perfect-panel/server/pkg/logger"
|
|
"github.com/perfect-panel/server/pkg/result"
|
|
"github.com/perfect-panel/server/pkg/tool"
|
|
)
|
|
|
|
func RegisterTelegramHandlers(router *gin.Engine, serverCtx *svc.ServiceContext) {
|
|
router.POST("/v1/telegram/webhook", TelegramHandler(serverCtx))
|
|
}
|
|
|
|
func TelegramHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) {
|
|
return func(c *gin.Context) {
|
|
// auth secret
|
|
secret := c.Query("secret")
|
|
if secret != tool.Md5Encode(svcCtx.Config.Telegram.BotToken, false) {
|
|
logger.WithContext(c.Request.Context()).Error("[TelegramHandler] Secret is wrong", logger.Field("request secret", secret), logger.Field("config secret", tool.Md5Encode(svcCtx.Config.Telegram.BotToken, false)), logger.Field("token", svcCtx.Config.Telegram.BotToken))
|
|
c.Abort()
|
|
result.HttpResult(c, nil, nil)
|
|
return
|
|
}
|
|
var request tgbotapi.Update
|
|
if err := c.BindJSON(&request); err != nil {
|
|
logger.WithContext(c.Request.Context()).Error("[TelegramHandler] Failed to bind request", logger.Field("error", err.Error()))
|
|
c.Abort()
|
|
result.HttpResult(c, nil, err)
|
|
}
|
|
l := telegram.NewTelegramLogic(c, svcCtx)
|
|
l.TelegramLogic(&request)
|
|
}
|
|
}
|