Add /config command
This commit is contained in:
parent
753a488c9d
commit
ec1197f83c
|
@ -24,6 +24,7 @@ type SessionsMap struct {
|
|||
// Session is a key-values subtree
|
||||
type Session struct {
|
||||
Login string `yaml:":login"`
|
||||
Timezone string `yaml:":timezone"`
|
||||
}
|
||||
|
||||
var sessionDB *SessionsYamlDB
|
||||
|
@ -75,3 +76,35 @@ func initYamlDB(path string, dataPtr *SessionsMap) (*SessionsYamlDB, error) {
|
|||
Data: dataPtr,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Get retrieves a session value
|
||||
func (s *Session) Get(key string) (string, error) {
|
||||
switch key {
|
||||
case "timezone":
|
||||
return s.Timezone, nil
|
||||
}
|
||||
|
||||
return "", errors.New("Unknown session property")
|
||||
}
|
||||
|
||||
// ToMap converts the session to a map
|
||||
func (s *Session) ToMap() map[string]string {
|
||||
m := make(map[string]string)
|
||||
for _, configKey := range []string{"timezone"} {
|
||||
value, _ := s.Get(configKey)
|
||||
m[configKey] = value
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
// Set sets a session value
|
||||
func (s *Session) Set(key string, value string) (string, error) {
|
||||
switch key {
|
||||
case "timezone":
|
||||
s.Timezone = value
|
||||
return value, nil
|
||||
}
|
||||
|
||||
return "", errors.New("Unknown session property")
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package telegram
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/pkg/errors"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
@ -22,7 +23,7 @@ var transportCommands = map[string]command{
|
|||
"setname": command{"first last", "update name"},
|
||||
"setbio": command{"", "update about"},
|
||||
"setpassword": command{"[old] [new]", "set or remove password"},
|
||||
//"config": command{"[param] [value]", "view or update configuration options"},
|
||||
"config": command{"[param] [value]", "view or update configuration options"},
|
||||
}
|
||||
|
||||
var chatCommands = map[string]command{
|
||||
|
@ -209,6 +210,29 @@ func (c *Client) ProcessTransportCommand(cmdline string) string {
|
|||
if err != nil {
|
||||
return errors.Wrap(err, "Couldn't set password").Error()
|
||||
}
|
||||
case "config":
|
||||
if len(args) > 1 {
|
||||
value, err := c.Session.Set(args[0], args[1])
|
||||
if err != nil {
|
||||
return err.Error()
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%s set to %s", args[0], value)
|
||||
} else if len(args) > 0 {
|
||||
value, err := c.Session.Get(args[0])
|
||||
if err != nil {
|
||||
return err.Error()
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%s is set to %s", args[0], value)
|
||||
}
|
||||
|
||||
var entries []string
|
||||
for key, value := range c.Session.ToMap() {
|
||||
entries = append(entries, fmt.Sprintf("%s is set to %s", key, value))
|
||||
}
|
||||
|
||||
return strings.Join(entries, "\n")
|
||||
case "help":
|
||||
return helpString(helpTypeTransport)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue