Skip to main content
Glama
read.go1.89 kB
package tg import ( "context" "encoding/json" "fmt" "github.com/gotd/td/tg" mcp "github.com/metoro-io/mcp-golang" "github.com/pkg/errors" ) type ReadArguments struct { Name string `json:"name" jsonschema:"description=Name of the dialog"` } type ReadResponse struct { Result string `json:"result"` } func (c *Client) ReadHistory(args ReadArguments) (*mcp.ToolResponse, error) { ctx := context.Background() var affectedMsgs *tg.MessagesAffectedMessages client := c.T() if err := client.Run(ctx, func(ctx context.Context) error { api := client.API() inputPeer, err := getInputPeerFromName(ctx, api, args.Name) if err != nil { return fmt.Errorf("get inputPeer from name: %w", err) } switch p := inputPeer.(type) { case *tg.InputPeerUser, *tg.InputPeerChat: affectedMsgs, err = api.MessagesReadHistory(ctx, &tg.MessagesReadHistoryRequest{ Peer: inputPeer, }) case *tg.InputPeerChannel: var ok bool ok, err = api.ChannelsReadHistory(ctx, &tg.ChannelsReadHistoryRequest{ Channel: &tg.InputChannel{ ChannelID: p.ChannelID, AccessHash: p.AccessHash, }, }) if err != nil { return fmt.Errorf("failed to read channels: %w", err) } affectedMsgs = &tg.MessagesAffectedMessages{} if ok { affectedMsgs = &tg.MessagesAffectedMessages{ Pts: 1, PtsCount: 1, } } default: return fmt.Errorf("unexpected input peer type: %T", p) } if err != nil { return fmt.Errorf("read history: %w", err) } return nil }); err != nil { return nil, fmt.Errorf("run client: %w", err) } res := "done" if affectedMsgs.PtsCount == 0 { res = "unread messages not found" } jsonData, err := json.Marshal(ReadResponse{Result: res}) if err != nil { return nil, errors.Wrap(err, "failed to marshal response") } return mcp.NewToolResponse(mcp.NewTextContent(string(jsonData))), 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