Skip to main content
Glama
auth.go•1.66 kB
package tg import ( "bufio" "context" "fmt" "os" "path/filepath" "strings" "github.com/gotd/td/telegram" "github.com/gotd/td/telegram/auth" "github.com/gotd/td/tg" "github.com/rs/zerolog/log" ) func Auth(phone string, appID int64, appHash string, sessionPath string, password string, newSession bool) error { if newSession { _ = os.Remove(sessionPath) } client := telegram.NewClient(int(appID), appHash, telegram.Options{ SessionStorage: &telegram.FileSessionStorage{ Path: sessionPath, }, }) sessionDir := filepath.Dir(sessionPath) if err := os.MkdirAll(sessionDir, 0700); err != nil { return fmt.Errorf("mkdir(%s): %w", sessionDir, err) } if err := client.Run(context.Background(), func(ctx context.Context) error { // Authenticate if needed flow := auth.NewFlow(auth.Constant(phone, password, auth.CodeAuthenticatorFunc(func(_ context.Context, _ *tg.AuthSentCode) (string, error) { fmt.Print("đź“© Enter code: ") code, err := bufio.NewReader(os.Stdin).ReadString('\n') if err != nil { return "", fmt.Errorf("read code: %w", err) } return strings.TrimSpace(code), nil })), auth.SendCodeOptions{}) if err := client.Auth().IfNecessary(ctx, flow); err != nil { return fmt.Errorf("auth: %w", err) } // Get current user info self, err := client.Self(ctx) if err != nil { return fmt.Errorf("get self info: %w", err) } log.Info(). Str("first_name", self.FirstName). Str("last_name", self.LastName). Str("username", self.Username). Int64("id", self.ID). Msg("Logged in as") return nil }); err != nil { return fmt.Errorf("client error: %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