mirror of https://github.com/jlelse/GoBlog
Delete message on Telegram when post gets deleted
This commit is contained in:
parent
194d8698ce
commit
098cfbaa2e
81
telegram.go
81
telegram.go
|
@ -40,7 +40,7 @@ func (a *goBlog) initTelegram() {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
a.pUpdateHooks = append(a.pUpdateHooks, func(p *post) {
|
a.pUpdateHooks = append(a.pUpdateHooks, func(p *post) {
|
||||||
if tg := a.cfg.Blogs[p.Blog].Telegram; tg.enabled() && p.isPublishedSectionPost() {
|
if tg := a.cfg.Blogs[p.Blog].Telegram; tg.enabled() {
|
||||||
tgChat := p.firstParameter("telegramchat")
|
tgChat := p.firstParameter("telegramchat")
|
||||||
tgMsg := p.firstParameter("telegrammsg")
|
tgMsg := p.firstParameter("telegrammsg")
|
||||||
if tgChat == "" || tgMsg == "" {
|
if tgChat == "" || tgMsg == "" {
|
||||||
|
@ -65,12 +65,39 @@ func (a *goBlog) initTelegram() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Send update
|
// Send update
|
||||||
err = a.sendUpdate(tg, chatId, messageId, html, "HTML")
|
err = a.update(tg, chatId, messageId, html, "HTML")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Failed to send update to Telegram: %v", err)
|
log.Printf("Failed to send update to Telegram: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
a.pDeleteHooks = append(a.pDeleteHooks, func(p *post) {
|
||||||
|
if tg := a.cfg.Blogs[p.Blog].Telegram; tg.enabled() {
|
||||||
|
tgChat := p.firstParameter("telegramchat")
|
||||||
|
tgMsg := p.firstParameter("telegrammsg")
|
||||||
|
if tgChat == "" || tgMsg == "" {
|
||||||
|
// Not send to Telegram
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Parse tgChat to int64
|
||||||
|
chatId, err := strconv.ParseInt(tgChat, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Failed to parse Telegram chat ID: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Parse tgMsg to int
|
||||||
|
messageId, err := strconv.Atoi(tgMsg)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Failed to parse Telegram message ID: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// Delete message
|
||||||
|
err = a.delete(tg, chatId, messageId)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Failed to delete Telegram message: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tg *configTelegram) enabled() bool {
|
func (tg *configTelegram) enabled() bool {
|
||||||
|
@ -123,7 +150,40 @@ func (a *goBlog) send(tg *configTelegram, message, mode string) (int64, int, err
|
||||||
return res.Chat.ID, res.MessageID, nil
|
return res.Chat.ID, res.MessageID, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *goBlog) sendUpdate(tg *configTelegram, chatId int64, messageId int, message, mode string) error {
|
func (a *goBlog) update(tg *configTelegram, chatId int64, messageId int, message, mode string) error {
|
||||||
|
if !tg.enabled() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
bot, err := tgbotapi.NewBotAPIWithClient(tg.BotToken, tgbotapi.APIEndpoint, a.httpClient)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// Check if chat is still the configured one
|
||||||
|
chat, err := bot.GetChat(tgbotapi.ChatInfoConfig{
|
||||||
|
ChatConfig: tgbotapi.ChatConfig{
|
||||||
|
SuperGroupUsername: tg.ChatID,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if chat.ID != chatId {
|
||||||
|
return errors.New("chat id mismatch")
|
||||||
|
}
|
||||||
|
// Send update
|
||||||
|
msg := tgbotapi.EditMessageTextConfig{
|
||||||
|
BaseEdit: tgbotapi.BaseEdit{
|
||||||
|
ChatID: chatId,
|
||||||
|
MessageID: messageId,
|
||||||
|
},
|
||||||
|
Text: message,
|
||||||
|
ParseMode: mode,
|
||||||
|
}
|
||||||
|
_, err = bot.Send(msg)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *goBlog) delete(tg *configTelegram, chatId int64, messageId int) error {
|
||||||
if !tg.enabled() {
|
if !tg.enabled() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -142,17 +202,10 @@ func (a *goBlog) sendUpdate(tg *configTelegram, chatId int64, messageId int, mes
|
||||||
if chat.ID != chatId {
|
if chat.ID != chatId {
|
||||||
return errors.New("chat id mismatch")
|
return errors.New("chat id mismatch")
|
||||||
}
|
}
|
||||||
msg := tgbotapi.EditMessageTextConfig{
|
msg := tgbotapi.DeleteMessageConfig{
|
||||||
BaseEdit: tgbotapi.BaseEdit{
|
ChatID: chatId,
|
||||||
ChatID: chatId,
|
MessageID: messageId,
|
||||||
MessageID: messageId,
|
|
||||||
},
|
|
||||||
Text: message,
|
|
||||||
ParseMode: mode,
|
|
||||||
}
|
}
|
||||||
_, err = bot.Send(msg)
|
_, err = bot.Send(msg)
|
||||||
if err != nil {
|
return err
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue