package utils import ( "bytes" "encoding/json" "fmt" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" "io" "log" "path/filepath" "strings" "time" ) var JSON_SETTINGS string = filepath.Join(WORKDIR, "settings.json") var settingsTime = time.Unix(0, 0) type SysSettings struct { IgnoredChats map[int64]bool `json:"IgnoredChats"` } var Settings = SysSettings{IgnoredChats: map[int64]bool{}} func rwSettings() { buff, err := ChangedStream(JSON_SETTINGS, writeSettings, settingsTime) if err != nil { log.Panic(err) return } conf := SysSettings{} err = json.Unmarshal(buff.Bytes(), &conf) if err != nil { log.Panic(err) return } Settings = conf } func writeSettings() (io.Reader, error) { b, err := json.Marshal(Settings) if err != nil { return nil, err } return bytes.NewBuffer(b), nil } func SystemControl(tgMesg *tgbotapi.Message) (string, bool) { rwSettings() processed := false mesg := "" if tgMesg.Text == "" { return "", false } if tgMesg.Text[0] == '/' { processed = true } chatId := tgMesg.Chat.ID if Settings.IgnoredChats == nil { Settings.IgnoredChats = map[int64]bool{} } if strings.Contains(tgMesg.Text, "/golifehk disable") { mesg = fmt.Sprintf("OK") Settings.IgnoredChats[chatId] = true processed = true } if strings.Contains(tgMesg.Text, "/golifehk enable") { mesg = fmt.Sprintf("OK") Settings.IgnoredChats[chatId] = false processed = true } if processed { settingsTime = time.Now() rwSettings() } //// Begin processing settings // ignore chats if enabled if ignore, ok := Settings.IgnoredChats[chatId]; ok { processed = processed || ignore } else { // default ignore processed = true } return mesg, processed }