2017-11-21 06:06:32 +04:00
|
|
|
|
// i2_bot – Instinct PokememBro Bot
|
2018-03-31 16:45:09 +04:00
|
|
|
|
// Copyright (c) 2017-2018 Vladimir "fat0troll" Hodakov
|
2017-11-21 06:06:32 +04:00
|
|
|
|
|
|
|
|
|
package broadcaster
|
|
|
|
|
|
|
|
|
|
import (
|
2018-03-31 16:45:09 +04:00
|
|
|
|
"strconv"
|
|
|
|
|
|
2018-01-30 20:38:00 +04:00
|
|
|
|
"github.com/go-telegram-bot-api/telegram-bot-api"
|
2018-05-19 12:14:25 +04:00
|
|
|
|
"github.com/fat0troll/i2_bot/lib/constants"
|
|
|
|
|
"github.com/fat0troll/i2_bot/lib/dbmapping"
|
2017-11-21 06:06:32 +04:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// AdminBroadcastMessageSend sends saved message to all private chats
|
|
|
|
|
func (b *Broadcaster) AdminBroadcastMessageSend(update *tgbotapi.Update, playerRaw *dbmapping.Player) string {
|
2017-11-25 03:00:34 +04:00
|
|
|
|
messageNum := update.Message.CommandArguments()
|
2017-11-21 06:06:32 +04:00
|
|
|
|
messageNumInt, _ := strconv.Atoi(messageNum)
|
|
|
|
|
messageRaw, ok := b.getBroadcastMessageByID(messageNumInt)
|
|
|
|
|
if !ok {
|
2018-03-31 16:45:09 +04:00
|
|
|
|
return constants.BotError
|
2017-11-21 06:06:32 +04:00
|
|
|
|
}
|
|
|
|
|
if messageRaw.AuthorID != playerRaw.ID {
|
2018-03-31 16:45:09 +04:00
|
|
|
|
return constants.UserRequestForbidden
|
2017-11-21 06:06:32 +04:00
|
|
|
|
}
|
|
|
|
|
if messageRaw.Status != "new" {
|
2018-03-31 16:45:09 +04:00
|
|
|
|
return constants.UserRequestFailed
|
2017-11-21 06:06:32 +04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
broadcastingMessageBody := messageRaw.Text
|
|
|
|
|
|
2018-01-30 20:38:00 +04:00
|
|
|
|
profileRaw, err := c.DataCache.GetProfileByPlayerID(playerRaw.ID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
c.Log.Error(err.Error())
|
2018-03-31 16:45:09 +04:00
|
|
|
|
return constants.UserRequestFailed
|
2018-01-30 20:38:00 +04:00
|
|
|
|
}
|
|
|
|
|
|
2018-01-31 00:10:10 +04:00
|
|
|
|
prettyName := profileRaw.Nickname + " (@" + profileRaw.TelegramNickname + ")"
|
2018-01-30 20:38:00 +04:00
|
|
|
|
|
2017-11-25 03:00:34 +04:00
|
|
|
|
privateChats := []dbmapping.Chat{}
|
|
|
|
|
switch messageRaw.BroadcastType {
|
|
|
|
|
case "all":
|
2018-02-17 07:03:58 +04:00
|
|
|
|
privateChats = c.DataCache.GetAllPrivateChats()
|
2017-11-25 03:00:34 +04:00
|
|
|
|
case "league":
|
2018-02-17 07:03:58 +04:00
|
|
|
|
privateChats = c.DataCache.GetLeaguePrivateChats()
|
2017-11-21 06:06:32 +04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for i := range privateChats {
|
|
|
|
|
chat := privateChats[i]
|
|
|
|
|
broadcastingMessage := "*Привет, " + chat.Name + "!*\n\n"
|
2018-01-30 20:38:00 +04:00
|
|
|
|
broadcastingMessage += "*Важное сообщение от администратора *" + prettyName + "\n\n"
|
2017-11-21 06:06:32 +04:00
|
|
|
|
broadcastingMessage += broadcastingMessageBody
|
|
|
|
|
|
2018-03-31 16:45:09 +04:00
|
|
|
|
c.Sender.SendMarkdownMessageToChatID(chat.TelegramID, broadcastingMessage)
|
2017-11-21 06:06:32 +04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
messageRaw, ok = b.updateBroadcastMessageStatus(messageRaw.ID, "sent")
|
|
|
|
|
if !ok {
|
2018-03-31 16:45:09 +04:00
|
|
|
|
return constants.BotError
|
2017-11-21 06:06:32 +04:00
|
|
|
|
}
|
|
|
|
|
|
2017-11-25 03:00:34 +04:00
|
|
|
|
message := "Сообщение отправлено. Надеюсь, пользователи бота за него тебя не убьют.\n"
|
2017-11-21 06:06:32 +04:00
|
|
|
|
|
2018-03-31 16:45:09 +04:00
|
|
|
|
c.Sender.SendMarkdownAnswer(update, message)
|
2017-11-21 06:06:32 +04:00
|
|
|
|
|
2018-03-31 16:45:09 +04:00
|
|
|
|
return constants.UserRequestSuccess
|
2017-11-21 06:06:32 +04:00
|
|
|
|
}
|