package commands
import (
"os"
"strconv"
"strings"
"time"
"watn3y/bloaterbot/botIO"
"watn3y/bloaterbot/commands/download"
"watn3y/bloaterbot/commands/gaypoints"
"watn3y/bloaterbot/commands/notify"
"watn3y/bloaterbot/config"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
"github.com/rs/zerolog/log"
)
//TODO logging
func Commands(update tgbotapi.Update, bot *tgbotapi.BotAPI) {
cmd := strings.ToLower(update.Message.Command())
log.Debug().Str("cmd", cmd).Msg("Matching command")
switch cmd {
case "shutup":
shutup(update, bot)
case "shut":
shutup(update, bot)
case "gp":
gaypoints.GetGP(update, bot)
case "addgp":
gaypoints.SetGP(update, bot)
case "subtractgp":
gaypoints.SetGP(update, bot)
case "remindme":
notify.Reminder(update, bot)
case "download":
go download.Download(update, bot)
case "dl":
go download.Download(update, bot)
case "help":
help(update, bot)
case "info":
info(update, bot)
}
}
func shutup(update tgbotapi.Update, bot *tgbotapi.BotAPI) {
config.BotConfig.Shutup[update.Message.Chat.ID] = time.Now().UTC()
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Shutting up")
log.Info().Int64("chat", update.Message.Chat.ID).Msg("Shutting up")
botIO.SendMessage(msg, bot)
}
func help(update tgbotapi.Update, bot *tgbotapi.BotAPI) {
const textHelp string = "User commands:" + "\n\n" +
"/help
Sends this help message" + "\n" +
"/gp
List Gaypoints for user or group" + "\n" +
"/remindme 2m,5h,7d <message>
Send a reminder message in 2 minutes, 5 hours, 7 days" + "\n\n" +
"Admin Commands:" + "\n" +
"/addgp <amount>
Add Gaypoints to User" + "\n" +
"/subtractgp <amount>
Add Gaypoints to User" + "\n"
message := tgbotapi.MessageConfig{
BaseChat: tgbotapi.BaseChat{ChatID: update.Message.Chat.ID, ReplyToMessageID: update.Message.MessageID},
ParseMode: "html",
DisableWebPagePreview: false,
Text: textHelp,
}
botIO.SendMessage(message, bot)
}
func info(update tgbotapi.Update, bot *tgbotapi.BotAPI) {
me, _ := bot.GetMe()
commit := os.Getenv("COMMIT")
if commit == "" {
commit = "not available"
}
info, _ := os.Stat("./bloater.db")
dbSizeInKiloBytes := info.Size() / 1000
textInfo := "" + me.FirstName + "" + "\n\n" +
"Commit: " + "" + commit + "
" + "\n" +
"DB Size: " + "" + strconv.FormatInt(dbSizeInKiloBytes, 10) + "KB" + "
"
message := tgbotapi.MessageConfig{
BaseChat: tgbotapi.BaseChat{ChatID: update.Message.Chat.ID, ReplyToMessageID: update.Message.MessageID},
ParseMode: "html",
DisableWebPagePreview: false,
Text: textInfo,
}
botIO.SendMessage(message, bot)
}