Skip to main content
Glama
dialogs_offset.go2.02 kB
package tg import ( "encoding/json" "fmt" "strconv" "strings" "github.com/gotd/td/tg" ) type DialogsOffset struct { MsgID int `json:"msg_id"` Date int `json:"offset_date"` Peer tg.InputPeerClass } func getInputPeerID(p tg.PeerClass) tg.InputPeerClass { switch v := p.(type) { case *tg.PeerUser: return &tg.InputPeerUser{UserID: v.UserID} case *tg.PeerChannel: return &tg.InputPeerChannel{ChannelID: v.ChannelID} case *tg.PeerChat: return &tg.InputPeerChat{ChatID: v.ChatID} default: return &tg.InputPeerEmpty{} } } func (o DialogsOffset) MarshalJSON() ([]byte, error) { return json.Marshal(o.String()) } func (o *DialogsOffset) String() string { var id int64 var peerType string switch p := o.Peer.(type) { case *tg.InputPeerUser: peerType = "user" id = p.UserID case *tg.InputPeerChannel: peerType = "chan" id = p.ChannelID case *tg.InputPeerChat: peerType = "chat" id = p.ChatID default: peerType = "unknown" } if id == 0 { return "end" } return fmt.Sprintf("%s-%d-%d-%d", peerType, id, o.MsgID, o.Date) } func (o *DialogsOffset) UnmarshalJSON(data []byte) error { parts := strings.Split(string(data), "-") if len(parts) != 4 { return fmt.Errorf("invalid format") } var err error switch parts[0] { case "user": var userID int64 userID, err = strconv.ParseInt(parts[1], 10, 64) o.Peer = &tg.InputPeerUser{UserID: userID} case "chan": var channelID int64 channelID, err = strconv.ParseInt(parts[1], 10, 64) o.Peer = &tg.InputPeerChannel{ChannelID: channelID} case "chat": var chatID int64 chatID, err = strconv.ParseInt(parts[1], 10, 64) o.Peer = &tg.InputPeerChat{ChatID: chatID} default: return fmt.Errorf("unknown peer type") } if err != nil { return fmt.Errorf("invalid peer: %w", err) } o.MsgID, err = strconv.Atoi(parts[2]) if err != nil { return fmt.Errorf("invalid message ID: %w", err) } o.Date, err = strconv.Atoi(parts[3]) if err != nil { return fmt.Errorf("invalid date: %w", err) } 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