shanshanzhong c582087c0f
Some checks failed
Build docker and publish / build (20.15.1) (push) Failing after 6m27s
refactor: 更新项目引用路径从perfect-panel/ppanel-server到perfect-panel/server
feat: 添加版本和构建时间变量
fix: 修正短信队列类型注释错误
style: 清理未使用的代码和测试文件
docs: 更新安装文档中的下载链接
chore: 迁移数据库脚本添加日志和订阅配置
2025-10-13 01:33:03 -07:00

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)
}
}