// Package dclist parses comma-separated Telegram DC ids (int16). package dclist import ( "fmt" "strconv" "strings" ) // ParseList parses "1,2,5" or "2". Empty string returns (nil, nil) — caller uses single-DC default. func ParseList(s string) ([]int16, error) { s = strings.TrimSpace(s) if s == "" { return nil, nil } parts := strings.Split(s, ",") out := make([]int16, 0, len(parts)) for _, p := range parts { p = strings.TrimSpace(p) if p == "" { continue } v, err := strconv.ParseInt(p, 10, 16) if err != nil { return nil, fmt.Errorf("dc id %q: %w", p, err) } if v < -32768 || v > 32767 { return nil, fmt.Errorf("dc id %d out of int16 range", v) } out = append(out, int16(v)) } if len(out) == 0 { return nil, fmt.Errorf("empty dc list after parsing %q", s) } return out, nil }