Skip to main content
Glama
helpers.go2.03 kB
package tg import ( "encoding/json" "fmt" "github.com/gotd/td/tg" "github.com/tidwall/gjson" ) func getTitle(source any) string { var name string switch u := source.(type) { case *tg.User: name = u.FirstName if u.LastName != "" { name += " " + u.LastName } case *tg.Chat: name = u.Title case *tg.Channel: name = u.Title } return name } func getUsername(source any) string { var username string switch u := source.(type) { case *tg.User: username = u.Username case *tg.Chat: username = fmt.Sprintf("cht[%d]", u.ID) case *tg.Channel: username = u.Username if username == "" { username = fmt.Sprintf("chn[%d:%d]", u.ID, u.AccessHash) } } return username } // cleanJSON removes empty/default fields from JSON func cleanJSON(data []byte) []byte { result := gjson.ParseBytes(data) cleaned := cleanValue(result) if cleaned == nil { return data // Return original if cleaning failed } cleanedJSON, err := json.Marshal(cleaned) if err != nil { return data // Return original if marshaling failed } return cleanedJSON } func cleanValue(v gjson.Result) interface{} { switch v.Type { case gjson.String: if v.String() == "" { return nil } return v.String() case gjson.Number: // return nil if v.Int() == 0 && v.Float() == 0 { return nil } return v.Value() case gjson.True: return nil // return true case gjson.False: return nil case gjson.Null: return nil case gjson.JSON: if v.IsArray() { arr := make([]interface{}, 0) v.ForEach(func(_, item gjson.Result) bool { if cleaned := cleanValue(item); cleaned != nil { arr = append(arr, cleaned) } return true }) if len(arr) == 0 { return nil } return arr } if v.IsObject() { obj := make(map[string]interface{}) v.ForEach(func(key, val gjson.Result) bool { if cleaned := cleanValue(val); cleaned != nil { obj[key.String()] = cleaned } return true }) if len(obj) == 0 { return nil } return obj } } return nil }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chaindead/telegram-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server