warbot_config.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // package warbot_config -- конфиг бота для хранения в базе
  2. package warbot_config
  3. import (
  4. "encoding/json"
  5. "fmt"
  6. "sync"
  7. "wartank/pkg/alias"
  8. )
  9. // ВарБотКонфиг -- конфиг бота для хранения в базе
  10. type ВарБотКонфиг struct {
  11. ЕслиАвтозапуск_ bool `json:"is_auto_run,omitempty"` // Признак автостарта при загрузке
  12. Логин_ string `json:"login"` // Логин бота
  13. Пароль_ string `json:"password"` // Пароль бота
  14. Номер_ alias.БотНомер `json:"number"` // Номер бота
  15. блок sync.RWMutex
  16. }
  17. // Marshall -- сериализует конфиг в JSON
  18. func (сам *ВарБотКонфиг) Marshall() []byte {
  19. binData, _ := json.Marshal(сам)
  20. return binData
  21. }
  22. // Unmarshall -- десериализует себя из байтового потока
  23. func (сам *ВарБотКонфиг) Unmarshall(binData []byte) error {
  24. err := json.Unmarshal(binData, сам)
  25. if err != nil {
  26. return fmt.Errorf("WarBotConfig.Unmarshall(): err=\n\t%w", err)
  27. }
  28. return nil
  29. }
  30. // Логин -- возвращает логин
  31. func (сам *ВарБотКонфиг) Логин() string {
  32. сам.блок.RLock()
  33. defer сам.блок.RUnlock()
  34. return сам.Логин_
  35. }
  36. // Номер -- возвращает номер бота
  37. func (сам *ВарБотКонфиг) Номер() alias.БотНомер {
  38. сам.блок.RLock()
  39. defer сам.блок.RUnlock()
  40. return сам.Номер_
  41. }