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 ") 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: %s", 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: /setadmintopic <topic_id/0>") 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 %d set to %d\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 /setapprovalmessage") } case "setapprovalmessage": if update.Message.CommandArguments() == "" { utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID, "Usage: /setapprovalmessage <message>") 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: %d", update.Message.Chat.ID), fmt.Sprintf("Admin Topic ID: %d", *bot.Config.AdminChatTopicId), fmt.Sprintf("Target Chat ID: %s", targetChatID), fmt.Sprintf("Entry Message: %s", bot.Config.EntryMessage), fmt.Sprintf("Approval Message: %s", bot.Config.ApprovalMessage)) utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID, infoMsg) } }