104 lines
3.6 KiB
Go
104 lines
3.6 KiB
Go
package handlers
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"strings"
|
|
|
|
utils "git.zio.sh/astra/telegram-approval-join/pkg/utils"
|
|
api "github.com/OvyFlash/telegram-bot-api"
|
|
)
|
|
|
|
func (bot *Bot) HandleAdminCommands(update *api.Update) {
|
|
switch update.Message.Command() {
|
|
case "setentrymessage":
|
|
if update.Message.CommandArguments() == "" {
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID,
|
|
"Usage: /setentrymessage <entry_message>")
|
|
return
|
|
}
|
|
|
|
_, e := utils.SendMessage(bot.API, bot.API.Self.ID, 0, update.Message.CommandArguments())
|
|
if e != nil {
|
|
if strings.HasPrefix(e.Error(), "Bad Request:") {
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID,
|
|
fmt.Sprintf("Unable to set entry message: <code>%s</code>", e))
|
|
return
|
|
}
|
|
}
|
|
|
|
bot.Config.EntryMessage = update.Message.CommandArguments()
|
|
if err := bot.Config.SaveConfig(); err != nil {
|
|
log.Printf("Failed to save config: %v", err)
|
|
}
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID,
|
|
"Entry message updated.")
|
|
|
|
case "setadmintopic":
|
|
if update.Message.CommandArguments() == "" {
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID,
|
|
"Usage: <code>/setadmintopic <topic_id/0></code>")
|
|
return
|
|
}
|
|
|
|
topicID, errMsg := utils.ParseIntArg(update.Message.CommandArguments())
|
|
if errMsg != "" {
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID,
|
|
"Invalid topic ID")
|
|
return
|
|
}
|
|
|
|
bot.Config.AdminChatTopicId = &topicID
|
|
if err := bot.Config.SaveConfig(); err != nil {
|
|
log.Printf("Failed to save config: %v", err)
|
|
}
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, topicID,
|
|
fmt.Sprintf("Topic ID for admin chat <b>%d</b> set to <b>%d</b>\n",
|
|
update.Message.Chat.ID, topicID))
|
|
|
|
case "togglesendapproval":
|
|
if bot.Config.ApprovalMessage != "" {
|
|
switch bot.Config.SendApprovalMessage {
|
|
case true:
|
|
bot.Config.SendApprovalMessage = false
|
|
case false:
|
|
bot.Config.SendApprovalMessage = true
|
|
}
|
|
if err := bot.Config.SaveConfig(); err != nil {
|
|
log.Printf("Failed to save config: %v", err)
|
|
}
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID,
|
|
fmt.Sprintf("Send approval message: %v", bot.Config.SendApprovalMessage))
|
|
} else {
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID,
|
|
"Please set an approval message with <code>/setapprovalmessage</code>")
|
|
}
|
|
|
|
case "setapprovalmessage":
|
|
if update.Message.CommandArguments() == "" {
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID,
|
|
"Usage: <code>/setapprovalmessage <message></code>")
|
|
return
|
|
}
|
|
|
|
bot.Config.ApprovalMessage = update.Message.CommandArguments()
|
|
if err := bot.Config.SaveConfig(); err != nil {
|
|
log.Printf("Failed to save config: %v", err)
|
|
}
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID,
|
|
"Approval message set.")
|
|
|
|
case "info":
|
|
targetChatID := "not set"
|
|
if *bot.Config.TargetChatId != 0 {
|
|
targetChatID = fmt.Sprintf("%d", *bot.Config.TargetChatId)
|
|
}
|
|
infoMsg := fmt.Sprintf("%s\n%s\n%s\n%s\n%s",
|
|
fmt.Sprintf("Admin Chat ID: <b>%d</b>", update.Message.Chat.ID),
|
|
fmt.Sprintf("Admin Topic ID: <b>%d</b>", *bot.Config.AdminChatTopicId),
|
|
fmt.Sprintf("Target Chat ID: <b>%s</b>", targetChatID),
|
|
fmt.Sprintf("Entry Message: %s", utils.EscapeHTML(bot.Config.EntryMessage)),
|
|
fmt.Sprintf("Approval Message: %s", bot.Config.ApprovalMessage))
|
|
utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID, infoMsg)
|
|
}
|
|
}
|