package tgbot
import (
"fmt"
"strconv"
"strings"
tele "gopkg.in/telebot.v4"
sets "server/settings"
)
func cmdViewed(c tele.Context) error {
args := c.Args()
if len(args) == 0 {
return c.Send(tr(c.Sender().ID, "viewed_usage"))
}
action := strings.ToLower(args[0])
if action == "set" || action == "rem" {
if len(args) < 2 {
return c.Send(fmt.Sprintf(tr(c.Sender().ID, "viewed_usage_action"), action))
}
hash := resolveHash(c, args[1])
if hash == "" {
return c.Send(tr(c.Sender().ID, "invalid_hash"))
}
if action == "set" {
if len(args) < 3 {
return c.Send(tr(c.Sender().ID, "viewed_usage_set"))
}
index, err := strconv.Atoi(args[2])
if err != nil || index < 1 {
return c.Send(tr(c.Sender().ID, "viewed_file_index"))
}
sets.SetViewed(&sets.Viewed{Hash: hash, FileIndex: index})
return c.Send(fmt.Sprintf(tr(c.Sender().ID, "viewed_marked"), hash, index))
}
index := -1
if len(args) >= 3 {
if i, err := strconv.Atoi(args[2]); err == nil && i >= 1 {
index = i
}
}
sets.RemViewed(&sets.Viewed{Hash: hash, FileIndex: index})
if index >= 1 {
return c.Send(fmt.Sprintf(tr(c.Sender().ID, "viewed_unmarked"), hash, index))
}
return c.Send(fmt.Sprintf(tr(c.Sender().ID, "viewed_cleared"), hash))
}
hash := resolveHash(c, args[0])
if hash == "" {
return c.Send(tr(c.Sender().ID, "viewed_usage"))
}
list := sets.ListViewed(hash)
if len(list) == 0 {
return c.Send(tr(c.Sender().ID, "viewed_empty"))
}
var sb strings.Builder
sb.WriteString("" + tr(c.Sender().ID, "viewed_list") + "\n\n")
fmt.Fprintf(&sb, "%s\n\n", hash)
for _, v := range list {
fmt.Fprintf(&sb, " #%d\n", v.FileIndex)
}
return c.Send(sb.String())
}