Skip to main content

TelegramClient

Struct TelegramClient 

Source
pub struct TelegramClient { /* private fields */ }
Expand description

Telegram REST API client

Implementations§

Source§

impl TelegramClient

Source

pub fn new(token: impl Into<String>) -> Self

Create a new Telegram client

Source

pub fn token(&self) -> &str

Get the bot token

Source

pub async fn send_message( &self, chat_id: i64, text: &str, thread_id: Option<i64>, reply_markup: Option<ReplyMarkup>, ) -> Result<i64, BotError>

Send a text message

thread_id targets a forum topic. Returns the id of the message that was sent.

Source

pub async fn send_reply( &self, chat_id: i64, reply_to: i64, text: &str, ) -> Result<i64, BotError>

Send a text message as a reply to another message

reply_to is the id of the message to quote. Telegram drops the reply reference rather than failing when the target no longer exists (allow_sending_without_reply), and posts the reply into the referenced message’s forum topic. Returns the sent message’s id.

Source

pub async fn send_reply_markup( &self, chat_id: i64, reply_to: i64, text: &str, markup: Option<InlineKeyboardMarkup>, ) -> Result<i64, BotError>

Self::send_reply with an inline keyboard attached.

Source

pub async fn edit_message_text( &self, chat_id: i64, message_id: i64, text: &str, reply_markup: Option<ReplyMarkup>, ) -> Result<(), BotError>

Edit a message

Source

pub async fn edit_message_reply_markup( &self, chat_id: i64, message_id: i64, reply_markup: Option<InlineKeyboardMarkup>, ) -> Result<(), BotError>

Edit only a message’s inline keyboard. Called with None it is the existence probe: Telegram replies “message is not modified” on a live message and “message to edit not found” on a dead one.

Source

pub async fn answer_callback_query( &self, callback_query_id: &str, text: Option<&str>, show_alert: bool, ) -> Result<(), BotError>

Answer a callback query

Source

pub async fn set_webhook(&self, url: &str) -> Result<(), BotError>

Set webhook URL

Source

pub async fn delete_webhook(&self) -> Result<(), BotError>

Delete webhook

Source

pub async fn get_updates( &self, offset: Option<i64>, timeout: Option<u32>, ) -> Result<Vec<Update>, BotError>

Get updates using long polling

Source

pub async fn send_chat_action( &self, chat_id: i64, action: &str, thread_id: Option<i64>, ) -> Result<(), BotError>

Send a chat action (typing, uploading, etc.). thread_id targets a forum topic.

Source

pub async fn set_message_reaction( &self, chat_id: i64, message_id: i64, emoji: Option<&str>, is_big: bool, ) -> Result<(), BotError>

Set the bot’s emoji reaction on a message. None removes the bot’s reaction; is_big plays the large animation.

Source

pub async fn delete_message( &self, chat_id: i64, message_id: i64, ) -> Result<(), BotError>

Delete a message — the bot’s own, or any message in a chat where it has delete rights.

Source

pub async fn pin_message( &self, chat_id: i64, message_id: i64, notify: bool, ) -> Result<(), BotError>

Pin a message (notify = false pins silently); unpin removes the pin. Needs pin rights in groups.

Source

pub async fn unpin_message( &self, chat_id: i64, message_id: i64, ) -> Result<(), BotError>

Source

pub async fn set_my_commands( &self, commands: &[BotCommand], ) -> Result<(), BotError>

Set bot commands for the menu

Registers commands with Telegram so they appear in the command menu.

Source

pub async fn get_me(&self) -> Result<User, BotError>

The bot’s own identity. id is the user_id owner argument the sticker-set methods take; username is the mandatory _by_<bot> suffix for sets the bot creates.

Source

pub async fn get_file(&self, file_id: &str) -> Result<File, BotError>

getFile — resolve a file_id to its server-side file_path.

Source

pub async fn download_file( &self, file_path: &str, limit: usize, ) -> Result<Vec<u8>, BotError>

Download a file’s bytes using the file_path getFile returned.

Telegram serves file content from a separate URL shape (/file/bot<token>/<path>) and returns raw bytes rather than the usual JSON envelope. limit caps the buffered size; files larger than it error instead of truncating.

Source

pub async fn send_document( &self, chat_id: i64, file: FileSource, filename: Option<&str>, caption: Option<&str>, thread_id: Option<i64>, ) -> Result<i64, BotError>

Send a document/file.

Returns the id of the message that was sent.

Source

pub async fn send_photo( &self, chat_id: i64, file: FileSource, filename: &str, caption: Option<&str>, thread_id: Option<i64>, ) -> Result<i64, BotError>

Send a photo (JPEG, PNG, WebP, GIF, …)

Returns the id of the message that was sent.

Source

pub async fn send_sticker( &self, chat_id: i64, file: FileSource, filename: &str, thread_id: Option<i64>, ) -> Result<i64, BotError>

Send a native sticker by upload (WebP, TGS, or WebM)

Returns the id of the message that was sent.

Source

pub async fn send_media( &self, chat_id: i64, kind: MediaKind, file: FileSource, filename: &str, caption: Option<&str>, thread_id: Option<i64>, ) -> Result<i64, BotError>

Upload file as the given media kind; returns the sent message’s id. thread_id targets a forum topic.

Source

pub async fn send_media_id( &self, chat_id: i64, kind: MediaKind, file_id: &str, caption: Option<&str>, thread_id: Option<i64>, ) -> Result<i64, BotError>

Send media Telegram already hosts by file_id — anything the bot has seen in a message or holds in a sticker set. thread_id targets a forum topic. Returns the message id.

Source

pub async fn get_sticker_set(&self, name: &str) -> Result<StickerSet, BotError>

Fetch a sticker set by short name.

A missing set fails with a BotError::Api carrying Telegram’s STICKERSET_INVALID description.

Source

pub async fn create_sticker_set( &self, user_id: i64, name: &str, title: &str, sticker: NewSticker, ) -> Result<(), BotError>

Create a sticker set owned by user_id (the bot itself works) with sticker as its first entry. name must end in _by_<bot username>.

Source

pub async fn add_sticker_to_set( &self, user_id: i64, name: &str, sticker: NewSticker, ) -> Result<(), BotError>

Append sticker to a set the bot owns.

Source

pub async fn replace_sticker_in_set( &self, user_id: i64, name: &str, old_file_id: &str, sticker: NewSticker, ) -> Result<(), BotError>

Replace the sticker old_file_id points at with sticker, keeping its position in the set.

Trait Implementations§

Source§

impl Clone for TelegramClient

Source§

fn clone(&self) -> TelegramClient

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> ChatActionSenderBounds for T
where T: Send + Sync + ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more