deletedbot/admin.go

115 lines
2.2 KiB
Go
Raw Permalink Normal View History

2021-07-18 21:23:12 +00:00
package main
import (
"github.com/gin-gonic/gin"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)
type getBotsReturn struct {
Ok bool `json:"ok"`
ChangedKey int `json:"changed_key"`
ChangedWebhook int `json:"changed_webhook"`
Working int `json:"working"`
Total int `json:"total"`
2024-10-28 16:57:26 +00:00
Result []getBot `json:"result"`
2021-07-18 21:23:12 +00:00
}
type getBot struct {
Token string `json:"token"`
Username string `json:"username"`
Text string `json:"text"`
IsChangedKey bool `json:"is_changed_key"`
IsWorking bool `json:"is_working"`
IsChangedWebhook bool `json:"is_changed_webhook"`
}
2024-10-28 16:57:26 +00:00
func (ses *session) getBots(c *gin.Context) {
2021-07-18 21:23:12 +00:00
2024-10-28 16:57:26 +00:00
keys, err := ses.getAllBots()
2021-07-18 21:23:12 +00:00
if err != nil {
c.JSON(500, gin.H{
"ok": "false",
"description": "Internal server error.",
})
return
}
c.JSON(200, ses.populateGetBotsReturn(keys))
}
2024-10-28 16:57:26 +00:00
func (ses *session) populateGetBotsReturn(tokens []string) getBotsReturn {
2021-07-18 21:23:12 +00:00
var ret getBotsReturn
ret.Ok = true
2024-10-28 16:57:26 +00:00
ret.Total = len(tokens)
2021-07-18 21:23:12 +00:00
2024-10-28 16:57:26 +00:00
for _, token := range tokens {
2021-07-18 21:23:12 +00:00
ck := len(ret.Result)
2024-10-28 16:57:26 +00:00
text, _ := ses.getMessage(token)
2021-07-18 21:23:12 +00:00
ret.Result = append(ret.Result, getBot{
2024-10-28 16:57:26 +00:00
Token: token,
2021-07-18 21:23:12 +00:00
Text: text,
})
2024-10-28 16:57:26 +00:00
bot, err := tgbotapi.NewBotAPI(token)
2021-07-18 21:23:12 +00:00
if err != nil {
ret.Result[ck].IsChangedWebhook = true
ret.Result[ck].IsChangedKey = true
ret.ChangedWebhook++
ret.ChangedKey++
continue
}
ret.Result[ck].Username = bot.Self.UserName
webhookInfo, _ := bot.GetWebhookInfo()
2024-10-28 16:57:26 +00:00
if webhookInfo.URL != "https://"+ses.WebhookDomain+"/telegram/"+token {
2021-07-18 21:23:12 +00:00
ret.Result[ck].IsChangedWebhook = true
ret.ChangedWebhook++
continue
}
ret.Working++
ret.Result[ck].IsWorking = true
}
return ret
}
2024-10-28 16:57:26 +00:00
func (ses *session) unsetBot(c *gin.Context) {
2021-07-18 21:23:12 +00:00
token := c.PostForm("token")
doError := func(err error) {
c.JSON(503, gin.H{
2024-10-28 16:57:26 +00:00
"ok": true,
2021-07-18 21:23:12 +00:00
"message": "Internal error",
"details": err.Error(),
})
}
err := ses.unsetWebhookForBot(token)
if err != nil {
doError(err)
return
}
2024-10-28 16:57:26 +00:00
err = ses.deleteBot(token)
2021-07-18 21:23:12 +00:00
if err != nil {
doError(err)
return
}
c.JSON(200, gin.H{
2024-10-28 16:57:26 +00:00
"ok": true,
2021-07-18 21:23:12 +00:00
"message": "Webhook removed",
"details": "The webhook has been removed",
})
2024-10-28 16:57:26 +00:00
}