package handlers import ( "fmt" "log" "strings" utils "git.zio.sh/astra/telegram-approval-join-nuzzles/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 && 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 == "" { utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID, "Please set an approval message with /setapprovalmessage") return } bot.Config.SendApprovalMessage = !bot.Config.SendApprovalMessage 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)) 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) } utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID, fmt.Sprintf( "Admin Chat ID: %d\nAdmin Topic ID: %d\nTarget Chat ID: %s\nEntry Message: %s\nApproval Message: %s", update.Message.Chat.ID, *bot.Config.AdminChatTopicId, targetChatID, bot.Config.EntryMessage, bot.Config.ApprovalMessage, )) case "edit": if update.Message.ReplyToMessage == nil { utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID, "Please reply to a message with /edit ") return } if update.Message.CommandArguments() == "" { utils.SendMessage(bot.API, update.Message.Chat.ID, update.Message.MessageThreadID, "Usage: /edit ") return } newText := update.Message.CommandArguments() utils.EditMessage(bot.API, update.Message.Chat.ID, update.Message.ReplyToMessage.MessageID, newText) // Delete the admin's edit command message bot.API.Send(api.NewDeleteMessage(update.Message.Chat.ID, update.Message.MessageID)) } }