mirror of
https://github.com/songquanpeng/one-api.git
synced 2025-09-29 14:46:38 +08:00
132 lines
2.6 KiB
Go
132 lines
2.6 KiB
Go
package controller
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"one-api/common"
|
|
"one-api/common/telegram"
|
|
"one-api/model"
|
|
"strconv"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func TelegramBotWebHook(c *gin.Context) {
|
|
handlerFunc := telegram.TGupdater.GetHandlerFunc("/")
|
|
|
|
handlerFunc(c.Writer, c.Request)
|
|
}
|
|
|
|
func GetTelegramMenuList(c *gin.Context) {
|
|
var params model.GenericParams
|
|
if err := c.ShouldBindQuery(¶ms); err != nil {
|
|
common.APIRespondWithError(c, http.StatusOK, err)
|
|
return
|
|
}
|
|
|
|
list, err := model.GetTelegramMenusList(¶ms)
|
|
if err != nil {
|
|
common.APIRespondWithError(c, http.StatusOK, err)
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "",
|
|
"data": list,
|
|
})
|
|
}
|
|
|
|
func GetTelegramMenu(c *gin.Context) {
|
|
id, _ := strconv.Atoi(c.Param("id"))
|
|
menu, err := model.GetTelegramMenuById(id)
|
|
if err != nil {
|
|
common.APIRespondWithError(c, http.StatusOK, err)
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "",
|
|
"data": menu,
|
|
})
|
|
}
|
|
|
|
func AddOrUpdateTelegramMenu(c *gin.Context) {
|
|
menu := model.TelegramMenu{}
|
|
err := c.ShouldBindJSON(&menu)
|
|
if err != nil {
|
|
common.APIRespondWithError(c, http.StatusOK, err)
|
|
return
|
|
}
|
|
|
|
defaultMenu := telegram.GetDefaultMenu()
|
|
// 遍历, 禁止有相同的command
|
|
for _, v := range defaultMenu {
|
|
if v.Command == menu.Command {
|
|
common.APIRespondWithError(c, http.StatusOK, errors.New("command已存在"))
|
|
return
|
|
}
|
|
}
|
|
|
|
if model.IsTelegramCommandAlreadyTaken(menu.Command, menu.Id) {
|
|
common.APIRespondWithError(c, http.StatusOK, errors.New("command已存在"))
|
|
return
|
|
}
|
|
|
|
message := "添加成功"
|
|
if menu.Id == 0 {
|
|
err = menu.Insert()
|
|
} else {
|
|
err = menu.Update()
|
|
message = "修改成功"
|
|
}
|
|
|
|
if err != nil {
|
|
common.APIRespondWithError(c, http.StatusOK, err)
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": message,
|
|
})
|
|
}
|
|
|
|
func DeleteTelegramMenu(c *gin.Context) {
|
|
id, _ := strconv.Atoi(c.Param("id"))
|
|
menu := model.TelegramMenu{Id: id}
|
|
err := menu.Delete()
|
|
if err != nil {
|
|
common.APIRespondWithError(c, http.StatusOK, err)
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "删除成功",
|
|
})
|
|
}
|
|
|
|
func GetTelegramBotStatus(c *gin.Context) {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"data": gin.H{
|
|
"status": telegram.TGEnabled,
|
|
"is_webhook": telegram.TGWebHookSecret != "",
|
|
},
|
|
})
|
|
}
|
|
|
|
func ReloadTelegramBot(c *gin.Context) {
|
|
err := telegram.ReloadMenuAndCommands()
|
|
if err != nil {
|
|
common.APIRespondWithError(c, http.StatusOK, err)
|
|
return
|
|
}
|
|
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "重载成功",
|
|
})
|
|
}
|