deletedbot/telegram.go

81 lines
1.5 KiB
Go
Raw Normal View History

2021-07-18 21:23:12 +00:00
package main
import (
"github.com/gin-gonic/gin"
"github.com/go-telegram-bot-api/telegram-bot-api/v5"
2024-10-28 16:57:26 +00:00
"io"
2021-07-18 21:23:12 +00:00
"encoding/json"
)
2024-10-28 16:57:26 +00:00
func (ses *session) setWebhookForBot(token string) (string, error) {
2021-07-18 21:23:12 +00:00
bot, err := tgbotapi.NewBotAPI(token)
2024-10-28 16:57:26 +00:00
if err != nil {
return "", err
}
2021-07-18 21:23:12 +00:00
2024-10-28 16:57:26 +00:00
webhook, err := tgbotapi.NewWebhook("https://" + ses.WebhookDomain + "/api/telegram/" + token)
if err != nil {
return "", err
}
_, err = bot.Request(webhook)
if err != nil {
return "", err
}
2021-07-18 21:23:12 +00:00
return bot.Self.UserName, nil
}
2024-10-28 16:57:26 +00:00
func (ses *session) unsetWebhookForBot(token string) error {
2021-07-18 21:23:12 +00:00
bot, err := tgbotapi.NewBotAPI(token)
2024-10-28 16:57:26 +00:00
if err != nil {
return err
}
2021-07-18 21:23:12 +00:00
2024-10-28 16:57:26 +00:00
_, err = bot.Request(tgbotapi.DeleteWebhookConfig{})
if err != nil {
return err
}
2021-07-18 21:23:12 +00:00
return nil
}
2024-10-28 16:57:26 +00:00
func (ses *session) telegram(c *gin.Context) {
2021-07-18 21:23:12 +00:00
2024-10-28 16:57:26 +00:00
var update tgbotapi.Update
2021-07-18 21:23:12 +00:00
token := c.Param("token")
2024-10-28 16:57:26 +00:00
2021-07-18 21:23:12 +00:00
bot, err1 := tgbotapi.NewBotAPI(token)
2024-10-28 16:57:26 +00:00
body, err2 := io.ReadAll(c.Request.Body)
err3 := json.Unmarshal(body, &update)
2021-07-18 21:23:12 +00:00
2024-10-28 16:57:26 +00:00
if err1 != nil || err2 != nil || err3 != nil {
2021-07-18 21:23:12 +00:00
return
}
if update.Message != nil {
if update.Message.Chat.ID > 0 {
2024-10-28 16:57:26 +00:00
val, err := ses.getMessage(token)
2021-07-18 21:23:12 +00:00
if err != nil {
2024-10-28 16:57:26 +00:00
val = "❌ Couldn't get start message for this bot. If you're its owner, try to register it again at " +
ses.WebhookDomain
2021-07-18 21:23:12 +00:00
}
msg := tgbotapi.NewMessage(update.Message.Chat.ID, val)
msg.ParseMode = "HTML"
bot.Send(msg)
2024-10-28 16:57:26 +00:00
bot.Send(tgbotapi.NewMessage(update.Message.Chat.ID, "Made with "+ses.WebhookDomain))
2021-07-18 21:23:12 +00:00
}
}
}