72 lines
2.3 KiB
Go
72 lines
2.3 KiB
Go
|
// i2_bot – Instinct PokememBro Bot
|
|||
|
// Copyright (c) 2017 Vladimir "fat0troll" Hodakov
|
|||
|
|
|||
|
package pinner
|
|||
|
|
|||
|
import (
|
|||
|
"github.com/go-telegram-bot-api/telegram-bot-api"
|
|||
|
)
|
|||
|
|
|||
|
// PinMessageToAllChats pins message to all groups where bot exist
|
|||
|
func (p *Pinner) PinMessageToAllChats(update *tgbotapi.Update) string {
|
|||
|
messageToPin := update.Message.CommandArguments()
|
|||
|
|
|||
|
if messageToPin == "" {
|
|||
|
return "fail"
|
|||
|
}
|
|||
|
|
|||
|
groupChats, ok := c.Getters.GetAllGroupChats()
|
|||
|
if !ok {
|
|||
|
return "fail"
|
|||
|
}
|
|||
|
|
|||
|
for i := range groupChats {
|
|||
|
if groupChats[i].ChatType == "supergroup" {
|
|||
|
message := messageToPin + "\n\n"
|
|||
|
message += "© " + update.Message.From.FirstName + " " + update.Message.From.LastName
|
|||
|
message += " (@" + update.Message.From.UserName + ")"
|
|||
|
|
|||
|
msg := tgbotapi.NewMessage(groupChats[i].TelegramID, message)
|
|||
|
msg.ParseMode = "Markdown"
|
|||
|
|
|||
|
pinnableMessage, err := c.Bot.Send(msg)
|
|||
|
if err != nil {
|
|||
|
c.Log.Error(err.Error())
|
|||
|
|
|||
|
message := "*Ваше сообщение не отправлено.*\n\n"
|
|||
|
message += "Обычно это связано с тем, что нарушена разметка Markdown. "
|
|||
|
message += "К примеру, если вы хотели использовать нижнее\\_подчёркивание, то печатать его надо так — \\\\_. То же самое касается всех управляющих разметкой символов в Markdown в случае, если вы их хотите использовать как текст, а не как управляющий символ Markdown."
|
|||
|
|
|||
|
msg := tgbotapi.NewMessage(update.Message.Chat.ID, message)
|
|||
|
msg.ParseMode = "Markdown"
|
|||
|
|
|||
|
c.Bot.Send(msg)
|
|||
|
|
|||
|
return "fail"
|
|||
|
}
|
|||
|
|
|||
|
pinChatMessageConfig := tgbotapi.PinChatMessageConfig{
|
|||
|
ChatID: pinnableMessage.Chat.ID,
|
|||
|
MessageID: pinnableMessage.MessageID,
|
|||
|
DisableNotification: true,
|
|||
|
}
|
|||
|
|
|||
|
_, err = c.Bot.PinChatMessage(pinChatMessageConfig)
|
|||
|
if err != nil {
|
|||
|
c.Log.Error(err.Error())
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
message := "*Ваше сообщение отправлено и запинено во все чаты, где сидит бот.*\n\n"
|
|||
|
message += "Текст отправленного сообщения:\n\n"
|
|||
|
message += messageToPin
|
|||
|
|
|||
|
msg := tgbotapi.NewMessage(update.Message.Chat.ID, message)
|
|||
|
msg.ParseMode = "Markdown"
|
|||
|
|
|||
|
c.Bot.Send(msg)
|
|||
|
|
|||
|
return "ok"
|
|||
|
}
|