package command
import (
"fmt"
"strings"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
"github.com/miti99/store-scraper-bot-go/internal/config"
"github.com/miti99/store-scraper-bot-go/internal/repository"
)
// /listgroup — Java ListGroupCommand. Admin-only. Lists authorized groups.
type ListGroupCommand struct {
cfg *config.Config
adminRepo *repository.AdminRepository
}
func NewListGroupCommand(cfg *config.Config, adminRepo *repository.AdminRepository) *ListGroupCommand {
return &ListGroupCommand{cfg: cfg, adminRepo: adminRepo}
}
func (c *ListGroupCommand) Execute(msg *tgbotapi.Message, sender Sender) {
if !requireAdminUser(msg.From.ID, msg.Chat.ID, c.cfg, sender) {
return
}
if len(splitArgs(msg.CommandArguments())) != 0 {
_ = sender.SendMessage(msg.Chat.ID, "Invalid arguments")
return
}
groups, err := c.adminRepo.GetAllGroups()
if err != nil {
_ = sender.SendMessage(msg.Chat.ID, "Internal server error")
return
}
if len(groups) == 0 {
_ = sender.SendMessage(msg.Chat.ID, "No groups found")
return
}
var sb strings.Builder
sb.WriteString(fmt.Sprintf("Authorized groups (%d):\n", len(groups)))
for i, gid := range groups {
sb.WriteString(fmt.Sprintf("%d. %d\n", i+1, gid))
}
_ = sender.SendMessage(msg.Chat.ID, sb.String())
}