tdesktop.go 849 B

123456789101112131415161718192021222324252627
  1. package sessionimport
  2. import (
  3. "fmt"
  4. "github.com/gotd/td/session"
  5. "github.com/gotd/td/session/tdesktop"
  6. )
  7. // ConvertTdataSession reads a Telegram Desktop tdata/ folder and builds a
  8. // gotd session.Data. localPassword is the local-storage password used to decrypt
  9. // the tdata blob; pass an empty string when the desktop client did not set a
  10. // local password (the common case for 协议号).
  11. func ConvertTdataSession(tdataDir, localPassword string) (*session.Data, error) {
  12. accounts, err := tdesktop.Read(tdataDir, []byte(localPassword))
  13. if err != nil {
  14. return nil, fmt.Errorf("read tdata: %w", err)
  15. }
  16. if len(accounts) == 0 {
  17. return nil, fmt.Errorf("no accounts found in tdata")
  18. }
  19. data, err := session.TDesktopSession(accounts[0])
  20. if err != nil {
  21. return nil, fmt.Errorf("convert tdesktop account: %w", err)
  22. }
  23. return data, nil
  24. }