Documentation ¶
Index ¶
- Variables
- type AuthStatus
- type Client
- func (c *Client) AuthKey() crypto.AuthKey
- func (c *Client) AuthStatus(ctx context.Context) (*AuthStatus, error)
- func (c *Client) Authenticated() bool
- func (c *Client) BotLogin(ctx context.Context, token string) error
- func (c *Client) Close(ctx context.Context) error
- func (c *Client) InvokeRaw(ctx context.Context, input bin.Encoder, output bin.Decoder) error
- func (c *Client) Ping(ctx context.Context) error
- func (c *Client) RandInt64() (int64, error)
- func (c *Client) SendMessage(ctx context.Context, req *tg.MessagesSendMessageRequest) error
- type Error
- type FileSessionStorage
- type Options
- type ProtocolErr
- type SessionStorage
- type UpdateClient
- type UpdateHandler
Constants ¶
This section is empty.
Variables ¶
var ErrSessionNotFound = errors.New("session storage: not found")
ErrSessionNotFound means that session is not found in storage.
Functions ¶
This section is empty.
Types ¶
type AuthStatus ¶
type AuthStatus struct { // Authorized is true if client is authorized. Authorized bool }
AuthStatus represents authorization status.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client represents a MTProto client to Telegram.
func Dial ¶
Dial initializes Client and creates connection to Telegram.
Note that no data is send or received during this process.
func (*Client) AuthStatus ¶
func (c *Client) AuthStatus(ctx context.Context) (*AuthStatus, error)
AuthStatus gets authorization status of client.
func (*Client) Authenticated ¶
Authenticated returns true of already authenticated.
func (*Client) InvokeRaw ¶
InvokeRaw sens input and decodes result into output.
NOTE: Assuming that call contains content message (seqno increment).
func (*Client) Ping ¶
Ping sends ping request to server and waits until pong is received or context is canceled.
func (*Client) SendMessage ¶
SendMessage sends message to peer.
type FileSessionStorage ¶
type FileSessionStorage struct {
Path string
}
FileSessionStorage implements SessionStorage for file system as file stored in Path.
func (*FileSessionStorage) LoadSession ¶
func (f *FileSessionStorage) LoadSession(_ context.Context) ([]byte, error)
func (*FileSessionStorage) StoreSession ¶
func (f *FileSessionStorage) StoreSession(_ context.Context, data []byte) error
type Options ¶
type Options struct { // PublicKeys of telegram. PublicKeys []*rsa.PublicKey // Addr to connect. Addr string // AppID is api_id of your application. /// // Can be found on https://my.telegram.org/apps. AppID int // AppHash is api_hash of your application. // // Can be found on https://my.telegram.org/apps. AppHash string // Dialer to use. Default dialer will be used if not provided. Dialer *net.Dialer // Network to use. Defaults to tcp. Network string // Random is random source. Defaults to crypto. Random io.Reader // Logger is instance of zap.Logger. No logs by default. Logger *zap.Logger // SessionStorage will be used to load and save session data. // NB: Very sensitive data, save with care. SessionStorage SessionStorage // UpdateHandler will be called on received update. UpdateHandler UpdateHandler }
Options of Client.
type ProtocolErr ¶
type ProtocolErr struct {
Code int32
}
ProtocolErr represents protocol level error.
func (ProtocolErr) Error ¶
func (p ProtocolErr) Error() string
type SessionStorage ¶
type SessionStorage interface { LoadSession(ctx context.Context) ([]byte, error) StoreSession(ctx context.Context, data []byte) error }
SessionStorage is secure persistent storage for client session.
NB: Implementation security is important, attacker can use not only for connecting as authenticated user or bot, but even decrypting previous messages in some situations.
type UpdateClient ¶
type UpdateHandler ¶
UpdateHandler will be called on received updates from Telegram.
Source Files ¶
- bot_login.go
- check_protocol_error.go
- client.go
- close.go
- create_auth_key.go
- decrypt.go
- encrypt.go
- error.go
- handle_ack.go
- handle_bad_msg.go
- handle_gzip.go
- handle_result.go
- handle_updates.go
- init_connection.go
- invoke_raw.go
- is_authorized.go
- message_id.go
- new_encrypted_msg.go
- ping.go
- rand_int64.go
- read_loop.go
- rpc.go
- send_message.go
- seq_no.go
- session_storage.go
- sha.go
- vendored_keys.go
- write.go
- xor.go