Struct Throttle

Source
pub struct Throttle<B> { /* private fields */ }
Available on crate feature throttle only.
Expand description

Automatic request limits respecting mechanism.

Telegram has strict limits, which, if exceeded will sooner or later cause RequestError::RetryAfter(_) errors. These errors can cause users of your bot to never receive responses from the bot or receive them in a wrong order.

This bot wrapper automatically checks for limits, suspending requests until they could be sent without exceeding limits (request order in chats is not changed).

It’s recommended to use this wrapper before other wrappers (i.e.: SomeWrapper<Throttle<Bot>> not Throttle<SomeWrapper<Bot>>) because if done otherwise inner wrappers may cause Throttle to miscalculate limits usage.

§Examples

use teloxide_core::{adaptors::throttle::Limits, requests::RequesterExt, Bot};

let bot = Bot::new("TOKEN")
    .throttle(Limits::default());

/* send many requests here */

§Note about send-by-@channelusername

Telegram have limits on sending messages to the same chat. To check them we store chat_ids of several last requests. However there is no good way to tell if given ChatId::Id(x) corresponds to the same chat as ChatId::ChannelUsername(u).

Our current approach is to just give up and check chat_id_a == chat_id_b. This may give incorrect results.

As such, we encourage not to use ChatId::ChannelUsername(u) with this bot wrapper.

Implementations§

Source§

impl<B> Throttle<B>

Source

pub fn new(bot: B, limits: Limits) -> (Self, impl Future<Output = ()>)

Creates new Throttle alongside with worker future.

Note: Throttle will only send requests if returned worker is polled/spawned/awaited.

Source

pub fn with_settings( bot: B, settings: Settings, ) -> (Self, impl Future<Output = ()>)

Creates new Throttle alongside with worker future.

Note: Throttle will only send requests if returned worker is polled/spawned/awaited.

Source

pub fn new_spawn(bot: B, limits: Limits) -> Self
where B: Requester + Clone + Send + Sync + 'static, B::Err: AsResponseParameters, B::GetChat: Send,

Creates new Throttle spawning the worker with tokio::spawn

Note: it’s recommended to use RequesterExt::throttle instead.

Source

pub fn spawn_with_settings(bot: B, settings: Settings) -> Self
where B: Requester + Clone + Send + Sync + 'static, B::Err: AsResponseParameters, B::GetChat: Send,

Creates new Throttle spawning the worker with tokio::spawn

Source

pub fn inner(&self) -> &B

Allows to access inner bot

Source

pub fn into_inner(self) -> B

Unwraps inner bot

Source

pub async fn limits(&self) -> Limits

Returns currently used Limits.

Source

pub async fn set_limits(&self, new: Limits)

Sets new limits.

Note: changes may not be applied immediately.

Trait Implementations§

Source§

impl<B: Clone> Clone for Throttle<B>

Source§

fn clone(&self) -> Throttle<B>

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<B: Debug> Debug for Throttle<B>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<B: Download> Download for Throttle<B>

Source§

type Err<'dst> = <B as Download>::Err<'dst>

An error returned from download_file.
Source§

type Fut<'dst> = <B as Download>::Fut<'dst>

A future returned from download_file.
Source§

type StreamErr = <B as Download>::StreamErr

An error returned from download_file_stream.
Source§

type Stream = <B as Download>::Stream

A stream returned from download_file_stream.
Source§

fn download_file<'dst>( &self, path: &str, destination: &'dst mut (dyn AsyncWrite + Unpin + Send), ) -> Self::Fut<'dst>

Download a file from Telegram into destination. Read more
Source§

fn download_file_stream(&self, path: &str) -> Self::Stream

Download a file from Telegram as Stream. Read more
Source§

impl<B: Requester> Requester for Throttle<B>
where B::Err: AsResponseParameters, B::SendMessage: Clone + Send + Sync + 'static, B::ForwardMessage: Clone + Send + Sync + 'static, B::CopyMessage: Clone + Send + Sync + 'static, B::SendPhoto: Clone + Send + Sync + 'static, B::SendAudio: Clone + Send + Sync + 'static, B::SendDocument: Clone + Send + Sync + 'static, B::SendVideo: Clone + Send + Sync + 'static, B::SendAnimation: Clone + Send + Sync + 'static, B::SendVoice: Clone + Send + Sync + 'static, B::SendVideoNote: Clone + Send + Sync + 'static, B::SendMediaGroup: Clone + Send + Sync + 'static, B::SendLocation: Clone + Send + Sync + 'static, B::SendVenue: Clone + Send + Sync + 'static, B::SendContact: Clone + Send + Sync + 'static, B::SendPoll: Clone + Send + Sync + 'static, B::SendDice: Clone + Send + Sync + 'static, B::SendSticker: Clone + Send + Sync + 'static, B::SendInvoice: Clone + Send + Sync + 'static,

Source§

type Err = <B as Requester>::Err

Error type returned by all requests.
Source§

type SendMessage = ThrottlingRequest<<B as Requester>::SendMessage>

Source§

type ForwardMessage = ThrottlingRequest<<B as Requester>::ForwardMessage>

Source§

type CopyMessage = ThrottlingRequest<<B as Requester>::CopyMessage>

Source§

type SendPhoto = ThrottlingRequest<<B as Requester>::SendPhoto>

Source§

type SendAudio = ThrottlingRequest<<B as Requester>::SendAudio>

Source§

type SendDocument = ThrottlingRequest<<B as Requester>::SendDocument>

Source§

type SendVideo = ThrottlingRequest<<B as Requester>::SendVideo>

Source§

type SendAnimation = ThrottlingRequest<<B as Requester>::SendAnimation>

Source§

type SendVoice = ThrottlingRequest<<B as Requester>::SendVoice>

Source§

type SendVideoNote = ThrottlingRequest<<B as Requester>::SendVideoNote>

Source§

type SendMediaGroup = ThrottlingRequest<<B as Requester>::SendMediaGroup>

Source§

type SendLocation = ThrottlingRequest<<B as Requester>::SendLocation>

Source§

type SendVenue = ThrottlingRequest<<B as Requester>::SendVenue>

Source§

type SendContact = ThrottlingRequest<<B as Requester>::SendContact>

Source§

type SendPoll = ThrottlingRequest<<B as Requester>::SendPoll>

Source§

type SendDice = ThrottlingRequest<<B as Requester>::SendDice>

Source§

type SendSticker = ThrottlingRequest<<B as Requester>::SendSticker>

Source§

type SendInvoice = ThrottlingRequest<<B as Requester>::SendInvoice>

Source§

type GetMe = <B as Requester>::GetMe

Source§

type LogOut = <B as Requester>::LogOut

Source§

type Close = <B as Requester>::Close

Source§

type GetUpdates = <B as Requester>::GetUpdates

Source§

type SetWebhook = <B as Requester>::SetWebhook

Source§

type DeleteWebhook = <B as Requester>::DeleteWebhook

Source§

type GetWebhookInfo = <B as Requester>::GetWebhookInfo

Source§

type ForwardMessages = <B as Requester>::ForwardMessages

Source§

type CopyMessages = <B as Requester>::CopyMessages

Source§

type EditMessageLiveLocation = <B as Requester>::EditMessageLiveLocation

Source§

type EditMessageLiveLocationInline = <B as Requester>::EditMessageLiveLocationInline

Source§

type StopMessageLiveLocation = <B as Requester>::StopMessageLiveLocation

Source§

type StopMessageLiveLocationInline = <B as Requester>::StopMessageLiveLocationInline

Source§

type SendChatAction = <B as Requester>::SendChatAction

Source§

type SetMessageReaction = <B as Requester>::SetMessageReaction

Source§

type GetUserProfilePhotos = <B as Requester>::GetUserProfilePhotos

Source§

type GetFile = <B as Requester>::GetFile

Source§

type KickChatMember = <B as Requester>::KickChatMember

Source§

type BanChatMember = <B as Requester>::BanChatMember

Source§

type UnbanChatMember = <B as Requester>::UnbanChatMember

Source§

type RestrictChatMember = <B as Requester>::RestrictChatMember

Source§

type PromoteChatMember = <B as Requester>::PromoteChatMember

Source§

type SetChatAdministratorCustomTitle = <B as Requester>::SetChatAdministratorCustomTitle

Source§

type BanChatSenderChat = <B as Requester>::BanChatSenderChat

Source§

type UnbanChatSenderChat = <B as Requester>::UnbanChatSenderChat

Source§

type SetChatPermissions = <B as Requester>::SetChatPermissions

Source§

type SetChatPhoto = <B as Requester>::SetChatPhoto

Source§

type DeleteChatPhoto = <B as Requester>::DeleteChatPhoto

Source§

type SetChatTitle = <B as Requester>::SetChatTitle

Source§

type SetChatDescription = <B as Requester>::SetChatDescription

Source§

type PinChatMessage = <B as Requester>::PinChatMessage

Source§

type UnpinChatMessage = <B as Requester>::UnpinChatMessage

Source§

type UnpinAllChatMessages = <B as Requester>::UnpinAllChatMessages

Source§

type LeaveChat = <B as Requester>::LeaveChat

Source§

type GetChat = <B as Requester>::GetChat

Source§

type GetChatAdministrators = <B as Requester>::GetChatAdministrators

Source§

type GetChatMembersCount = <B as Requester>::GetChatMembersCount

Source§

type GetChatMemberCount = <B as Requester>::GetChatMemberCount

Source§

type GetChatMember = <B as Requester>::GetChatMember

Source§

type SetChatStickerSet = <B as Requester>::SetChatStickerSet

Source§

type DeleteChatStickerSet = <B as Requester>::DeleteChatStickerSet

Source§

type GetForumTopicIconStickers = <B as Requester>::GetForumTopicIconStickers

Source§

type CreateForumTopic = <B as Requester>::CreateForumTopic

Source§

type EditForumTopic = <B as Requester>::EditForumTopic

Source§

type CloseForumTopic = <B as Requester>::CloseForumTopic

Source§

type ReopenForumTopic = <B as Requester>::ReopenForumTopic

Source§

type DeleteForumTopic = <B as Requester>::DeleteForumTopic

Source§

type UnpinAllForumTopicMessages = <B as Requester>::UnpinAllForumTopicMessages

Source§

type EditGeneralForumTopic = <B as Requester>::EditGeneralForumTopic

Source§

type CloseGeneralForumTopic = <B as Requester>::CloseGeneralForumTopic

Source§

type ReopenGeneralForumTopic = <B as Requester>::ReopenGeneralForumTopic

Source§

type HideGeneralForumTopic = <B as Requester>::HideGeneralForumTopic

Source§

type UnhideGeneralForumTopic = <B as Requester>::UnhideGeneralForumTopic

Source§

type UnpinAllGeneralForumTopicMessages = <B as Requester>::UnpinAllGeneralForumTopicMessages

Source§

type AnswerCallbackQuery = <B as Requester>::AnswerCallbackQuery

Source§

type GetUserChatBoosts = <B as Requester>::GetUserChatBoosts

Source§

type SetMyCommands = <B as Requester>::SetMyCommands

Source§

type GetMyCommands = <B as Requester>::GetMyCommands

Source§

type SetMyName = <B as Requester>::SetMyName

Source§

type GetMyName = <B as Requester>::GetMyName

Source§

type SetMyDescription = <B as Requester>::SetMyDescription

Source§

type GetMyDescription = <B as Requester>::GetMyDescription

Source§

type SetMyShortDescription = <B as Requester>::SetMyShortDescription

Source§

type GetMyShortDescription = <B as Requester>::GetMyShortDescription

Source§

type SetChatMenuButton = <B as Requester>::SetChatMenuButton

Source§

type GetChatMenuButton = <B as Requester>::GetChatMenuButton

Source§

type SetMyDefaultAdministratorRights = <B as Requester>::SetMyDefaultAdministratorRights

Source§

type GetMyDefaultAdministratorRights = <B as Requester>::GetMyDefaultAdministratorRights

Source§

type DeleteMyCommands = <B as Requester>::DeleteMyCommands

Source§

type AnswerInlineQuery = <B as Requester>::AnswerInlineQuery

Source§

type AnswerWebAppQuery = <B as Requester>::AnswerWebAppQuery

Source§

type EditMessageText = <B as Requester>::EditMessageText

Source§

type EditMessageTextInline = <B as Requester>::EditMessageTextInline

Source§

type EditMessageCaption = <B as Requester>::EditMessageCaption

Source§

type EditMessageCaptionInline = <B as Requester>::EditMessageCaptionInline

Source§

type EditMessageMedia = <B as Requester>::EditMessageMedia

Source§

type EditMessageMediaInline = <B as Requester>::EditMessageMediaInline

Source§

type EditMessageReplyMarkup = <B as Requester>::EditMessageReplyMarkup

Source§

type EditMessageReplyMarkupInline = <B as Requester>::EditMessageReplyMarkupInline

Source§

type StopPoll = <B as Requester>::StopPoll

Source§

type DeleteMessage = <B as Requester>::DeleteMessage

Source§

type DeleteMessages = <B as Requester>::DeleteMessages

Source§

type GetStickerSet = <B as Requester>::GetStickerSet

Source§

type GetCustomEmojiStickers = <B as Requester>::GetCustomEmojiStickers

Source§

type UploadStickerFile = <B as Requester>::UploadStickerFile

Source§

type CreateNewStickerSet = <B as Requester>::CreateNewStickerSet

Source§

type AddStickerToSet = <B as Requester>::AddStickerToSet

Source§

type SetStickerPositionInSet = <B as Requester>::SetStickerPositionInSet

Source§

type DeleteStickerFromSet = <B as Requester>::DeleteStickerFromSet

Source§

type SetStickerSetThumbnail = <B as Requester>::SetStickerSetThumbnail

Source§

type SetCustomEmojiStickerSetThumbnail = <B as Requester>::SetCustomEmojiStickerSetThumbnail

Source§

type SetStickerSetTitle = <B as Requester>::SetStickerSetTitle

Source§

type DeleteStickerSet = <B as Requester>::DeleteStickerSet

Source§

type SetStickerEmojiList = <B as Requester>::SetStickerEmojiList

Source§

type SetStickerKeywords = <B as Requester>::SetStickerKeywords

Source§

type SetStickerMaskPosition = <B as Requester>::SetStickerMaskPosition

Source§

type AnswerShippingQuery = <B as Requester>::AnswerShippingQuery

Source§

type AnswerPreCheckoutQuery = <B as Requester>::AnswerPreCheckoutQuery

Source§

type SetPassportDataErrors = <B as Requester>::SetPassportDataErrors

Source§

type SendGame = <B as Requester>::SendGame

Source§

type SetGameScore = <B as Requester>::SetGameScore

Source§

type SetGameScoreInline = <B as Requester>::SetGameScoreInline

Source§

type ApproveChatJoinRequest = <B as Requester>::ApproveChatJoinRequest

Source§

type DeclineChatJoinRequest = <B as Requester>::DeclineChatJoinRequest

Source§

type GetGameHighScores = <B as Requester>::GetGameHighScores

Source§

fn send_message<C, T>(&self, chat_id: C, text: T) -> Self::SendMessage
where C: Into<Recipient>, T: Into<String>,

For Telegram documentation see SendMessage.
Source§

fn forward_message<C, F>( &self, chat_id: C, from_chat_id: F, message_id: MessageId, ) -> Self::ForwardMessage
where C: Into<Recipient>, F: Into<Recipient>,

For Telegram documentation see ForwardMessage.
Source§

fn copy_message<C, F>( &self, chat_id: C, from_chat_id: F, message_id: MessageId, ) -> Self::CopyMessage
where C: Into<Recipient>, F: Into<Recipient>,

For Telegram documentation see CopyMessage.
Source§

fn send_photo<C>(&self, chat_id: C, photo: InputFile) -> Self::SendPhoto
where C: Into<Recipient>,

For Telegram documentation see SendPhoto.
Source§

fn send_audio<C>(&self, chat_id: C, audio: InputFile) -> Self::SendAudio
where C: Into<Recipient>,

For Telegram documentation see SendAudio.
Source§

fn send_document<C>( &self, chat_id: C, document: InputFile, ) -> Self::SendDocument
where C: Into<Recipient>,

For Telegram documentation see SendDocument.
Source§

fn send_video<C>(&self, chat_id: C, video: InputFile) -> Self::SendVideo
where C: Into<Recipient>,

For Telegram documentation see SendVideo.
Source§

fn send_animation<C>( &self, chat_id: C, animation: InputFile, ) -> Self::SendAnimation
where C: Into<Recipient>,

For Telegram documentation see SendAnimation.
Source§

fn send_voice<C>(&self, chat_id: C, voice: InputFile) -> Self::SendVoice
where C: Into<Recipient>,

For Telegram documentation see SendVoice.
Source§

fn send_video_note<C>( &self, chat_id: C, video_note: InputFile, ) -> Self::SendVideoNote
where C: Into<Recipient>,

For Telegram documentation see SendVideoNote.
Source§

fn send_media_group<C, M>(&self, chat_id: C, media: M) -> Self::SendMediaGroup
where C: Into<Recipient>, M: IntoIterator<Item = InputMedia>,

For Telegram documentation see SendMediaGroup.
Source§

fn send_location<C>( &self, chat_id: C, latitude: f64, longitude: f64, ) -> Self::SendLocation
where C: Into<Recipient>,

For Telegram documentation see SendLocation.
Source§

fn send_venue<C, T, A>( &self, chat_id: C, latitude: f64, longitude: f64, title: T, address: A, ) -> Self::SendVenue
where C: Into<Recipient>, T: Into<String>, A: Into<String>,

For Telegram documentation see SendVenue.
Source§

fn send_contact<C, P, F>( &self, chat_id: C, phone_number: P, first_name: F, ) -> Self::SendContact
where C: Into<Recipient>, P: Into<String>, F: Into<String>,

For Telegram documentation see SendContact.
Source§

fn send_poll<C, Q, O>( &self, chat_id: C, question: Q, options: O, ) -> Self::SendPoll
where C: Into<Recipient>, Q: Into<String>, O: IntoIterator<Item = String>,

For Telegram documentation see SendPoll.
Source§

fn send_dice<C>(&self, chat_id: C) -> Self::SendDice
where C: Into<Recipient>,

For Telegram documentation see SendDice.
Source§

fn send_sticker<C>(&self, chat_id: C, sticker: InputFile) -> Self::SendSticker
where C: Into<Recipient>,

For Telegram documentation see SendSticker.
Source§

fn send_invoice<Ch, T, D, Pa, P, C, Pri>( &self, chat_id: Ch, title: T, description: D, payload: Pa, provider_token: P, currency: C, prices: Pri, ) -> Self::SendInvoice
where Ch: Into<Recipient>, T: Into<String>, D: Into<String>, Pa: Into<String>, P: Into<String>, C: Into<String>, Pri: IntoIterator<Item = LabeledPrice>,

For Telegram documentation see SendInvoice.
Source§

fn get_me(&self) -> Self::GetMe

For Telegram documentation see GetMe.
Source§

fn log_out(&self) -> Self::LogOut

For Telegram documentation see LogOut.
Source§

fn close(&self) -> Self::Close

For Telegram documentation see Close.
Source§

fn get_updates(&self) -> Self::GetUpdates

For Telegram documentation see GetUpdates.
Source§

fn set_webhook(&self, url: Url) -> Self::SetWebhook

For Telegram documentation see SetWebhook.
Source§

fn delete_webhook(&self) -> Self::DeleteWebhook

For Telegram documentation see DeleteWebhook.
Source§

fn get_webhook_info(&self) -> Self::GetWebhookInfo

For Telegram documentation see GetWebhookInfo.
Source§

fn forward_messages<C, F, M>( &self, chat_id: C, from_chat_id: F, message_ids: M, ) -> Self::ForwardMessages
where C: Into<Recipient>, F: Into<Recipient>, M: IntoIterator<Item = MessageId>,

For Telegram documentation see ForwardMessages.
Source§

fn copy_messages<C, F, M>( &self, chat_id: C, from_chat_id: F, message_ids: M, ) -> Self::CopyMessages
where C: Into<Recipient>, F: Into<Recipient>, M: IntoIterator<Item = MessageId>,

For Telegram documentation see CopyMessages.
Source§

fn edit_message_live_location<C>( &self, chat_id: C, message_id: MessageId, latitude: f64, longitude: f64, ) -> Self::EditMessageLiveLocation
where C: Into<Recipient>,

For Telegram documentation see EditMessageLiveLocation.
Source§

fn edit_message_live_location_inline<I>( &self, inline_message_id: I, latitude: f64, longitude: f64, ) -> Self::EditMessageLiveLocationInline
where I: Into<String>,

For Telegram documentation see EditMessageLiveLocationInline.
Source§

fn stop_message_live_location<C>( &self, chat_id: C, message_id: MessageId, ) -> Self::StopMessageLiveLocation
where C: Into<Recipient>,

For Telegram documentation see StopMessageLiveLocation.
Source§

fn stop_message_live_location_inline<I>( &self, inline_message_id: I, ) -> Self::StopMessageLiveLocationInline
where I: Into<String>,

For Telegram documentation see StopMessageLiveLocationInline.
Source§

fn send_chat_action<C>( &self, chat_id: C, action: ChatAction, ) -> Self::SendChatAction
where C: Into<Recipient>,

For Telegram documentation see SendChatAction.
Source§

fn set_message_reaction<C>( &self, chat_id: C, message_id: MessageId, ) -> Self::SetMessageReaction
where C: Into<Recipient>,

For Telegram documentation see SetMessageReaction.
Source§

fn get_user_profile_photos(&self, user_id: UserId) -> Self::GetUserProfilePhotos

For Telegram documentation see GetUserProfilePhotos.
Source§

fn get_file<F>(&self, file_id: F) -> Self::GetFile
where F: Into<String>,

For Telegram documentation see GetFile.
Source§

fn kick_chat_member<C>( &self, chat_id: C, user_id: UserId, ) -> Self::KickChatMember
where C: Into<Recipient>,

For Telegram documentation see KickChatMember.
Source§

fn ban_chat_member<C>(&self, chat_id: C, user_id: UserId) -> Self::BanChatMember
where C: Into<Recipient>,

For Telegram documentation see BanChatMember.
Source§

fn unban_chat_member<C>( &self, chat_id: C, user_id: UserId, ) -> Self::UnbanChatMember
where C: Into<Recipient>,

For Telegram documentation see UnbanChatMember.
Source§

fn restrict_chat_member<C>( &self, chat_id: C, user_id: UserId, permissions: ChatPermissions, ) -> Self::RestrictChatMember
where C: Into<Recipient>,

For Telegram documentation see RestrictChatMember.
Source§

fn promote_chat_member<C>( &self, chat_id: C, user_id: UserId, ) -> Self::PromoteChatMember
where C: Into<Recipient>,

For Telegram documentation see PromoteChatMember.
Source§

fn set_chat_administrator_custom_title<Ch, C>( &self, chat_id: Ch, user_id: UserId, custom_title: C, ) -> Self::SetChatAdministratorCustomTitle
where Ch: Into<Recipient>, C: Into<String>,

For Telegram documentation see SetChatAdministratorCustomTitle.
Source§

fn ban_chat_sender_chat<C, S>( &self, chat_id: C, sender_chat_id: S, ) -> Self::BanChatSenderChat
where C: Into<Recipient>, S: Into<ChatId>,

For Telegram documentation see BanChatSenderChat.
Source§

fn unban_chat_sender_chat<C, S>( &self, chat_id: C, sender_chat_id: S, ) -> Self::UnbanChatSenderChat
where C: Into<Recipient>, S: Into<ChatId>,

For Telegram documentation see UnbanChatSenderChat.
Source§

fn set_chat_permissions<C>( &self, chat_id: C, permissions: ChatPermissions, ) -> Self::SetChatPermissions
where C: Into<Recipient>,

For Telegram documentation see SetChatPermissions.
For Telegram documentation see ExportChatInviteLink.
For Telegram documentation see CreateChatInviteLink.
For Telegram documentation see EditChatInviteLink.
For Telegram documentation see RevokeChatInviteLink.
Source§

fn set_chat_photo<C>(&self, chat_id: C, photo: InputFile) -> Self::SetChatPhoto
where C: Into<Recipient>,

For Telegram documentation see SetChatPhoto.
Source§

fn delete_chat_photo<C>(&self, chat_id: C) -> Self::DeleteChatPhoto
where C: Into<Recipient>,

For Telegram documentation see DeleteChatPhoto.
Source§

fn set_chat_title<C, T>(&self, chat_id: C, title: T) -> Self::SetChatTitle
where C: Into<Recipient>, T: Into<String>,

For Telegram documentation see SetChatTitle.
Source§

fn set_chat_description<C>(&self, chat_id: C) -> Self::SetChatDescription
where C: Into<Recipient>,

For Telegram documentation see SetChatDescription.
Source§

fn pin_chat_message<C>( &self, chat_id: C, message_id: MessageId, ) -> Self::PinChatMessage
where C: Into<Recipient>,

For Telegram documentation see PinChatMessage.
Source§

fn unpin_chat_message<C>(&self, chat_id: C) -> Self::UnpinChatMessage
where C: Into<Recipient>,

For Telegram documentation see UnpinChatMessage.
Source§

fn unpin_all_chat_messages<C>(&self, chat_id: C) -> Self::UnpinAllChatMessages
where C: Into<Recipient>,

For Telegram documentation see UnpinAllChatMessages.
Source§

fn leave_chat<C>(&self, chat_id: C) -> Self::LeaveChat
where C: Into<Recipient>,

For Telegram documentation see LeaveChat.
Source§

fn get_chat<C>(&self, chat_id: C) -> Self::GetChat
where C: Into<Recipient>,

For Telegram documentation see GetChat.
Source§

fn get_chat_administrators<C>(&self, chat_id: C) -> Self::GetChatAdministrators
where C: Into<Recipient>,

For Telegram documentation see GetChatAdministrators.
Source§

fn get_chat_members_count<C>(&self, chat_id: C) -> Self::GetChatMembersCount
where C: Into<Recipient>,

For Telegram documentation see GetChatMembersCount.
Source§

fn get_chat_member_count<C>(&self, chat_id: C) -> Self::GetChatMemberCount
where C: Into<Recipient>,

For Telegram documentation see GetChatMemberCount.
Source§

fn get_chat_member<C>(&self, chat_id: C, user_id: UserId) -> Self::GetChatMember
where C: Into<Recipient>,

For Telegram documentation see GetChatMember.
Source§

fn set_chat_sticker_set<C, S>( &self, chat_id: C, sticker_set_name: S, ) -> Self::SetChatStickerSet
where C: Into<Recipient>, S: Into<String>,

For Telegram documentation see SetChatStickerSet.
Source§

fn delete_chat_sticker_set<C>(&self, chat_id: C) -> Self::DeleteChatStickerSet
where C: Into<Recipient>,

For Telegram documentation see DeleteChatStickerSet.
Source§

fn get_forum_topic_icon_stickers(&self) -> Self::GetForumTopicIconStickers

For Telegram documentation see GetForumTopicIconStickers.
Source§

fn create_forum_topic<C, N, I>( &self, chat_id: C, name: N, icon_color: u32, icon_custom_emoji_id: I, ) -> Self::CreateForumTopic
where C: Into<Recipient>, N: Into<String>, I: Into<String>,

For Telegram documentation see CreateForumTopic.
Source§

fn edit_forum_topic<C>( &self, chat_id: C, message_thread_id: ThreadId, ) -> Self::EditForumTopic
where C: Into<Recipient>,

For Telegram documentation see EditForumTopic.
Source§

fn close_forum_topic<C>( &self, chat_id: C, message_thread_id: ThreadId, ) -> Self::CloseForumTopic
where C: Into<Recipient>,

For Telegram documentation see CloseForumTopic.
Source§

fn reopen_forum_topic<C>( &self, chat_id: C, message_thread_id: ThreadId, ) -> Self::ReopenForumTopic
where C: Into<Recipient>,

For Telegram documentation see ReopenForumTopic.
Source§

fn delete_forum_topic<C>( &self, chat_id: C, message_thread_id: ThreadId, ) -> Self::DeleteForumTopic
where C: Into<Recipient>,

For Telegram documentation see DeleteForumTopic.
Source§

fn unpin_all_forum_topic_messages<C>( &self, chat_id: C, message_thread_id: ThreadId, ) -> Self::UnpinAllForumTopicMessages
where C: Into<Recipient>,

For Telegram documentation see UnpinAllForumTopicMessages.
Source§

fn edit_general_forum_topic<C, N>( &self, chat_id: C, name: N, ) -> Self::EditGeneralForumTopic
where C: Into<Recipient>, N: Into<String>,

For Telegram documentation see EditGeneralForumTopic.
Source§

fn close_general_forum_topic<C>( &self, chat_id: C, ) -> Self::CloseGeneralForumTopic
where C: Into<Recipient>,

For Telegram documentation see CloseGeneralForumTopic.
Source§

fn reopen_general_forum_topic<C>( &self, chat_id: C, ) -> Self::ReopenGeneralForumTopic
where C: Into<Recipient>,

For Telegram documentation see ReopenGeneralForumTopic.
Source§

fn hide_general_forum_topic<C>(&self, chat_id: C) -> Self::HideGeneralForumTopic
where C: Into<Recipient>,

For Telegram documentation see HideGeneralForumTopic.
Source§

fn unhide_general_forum_topic<C>( &self, chat_id: C, ) -> Self::UnhideGeneralForumTopic
where C: Into<Recipient>,

For Telegram documentation see UnhideGeneralForumTopic.
Source§

fn unpin_all_general_forum_topic_messages<C>( &self, chat_id: C, ) -> Self::UnpinAllGeneralForumTopicMessages
where C: Into<Recipient>,

For Telegram documentation see UnpinAllGeneralForumTopicMessages.
Source§

fn answer_callback_query<C>( &self, callback_query_id: C, ) -> Self::AnswerCallbackQuery
where C: Into<String>,

For Telegram documentation see AnswerCallbackQuery.
Source§

fn get_user_chat_boosts<C>( &self, chat_id: C, user_id: UserId, ) -> Self::GetUserChatBoosts
where C: Into<Recipient>,

For Telegram documentation see GetUserChatBoosts.
Source§

fn set_my_commands<C>(&self, commands: C) -> Self::SetMyCommands
where C: IntoIterator<Item = BotCommand>,

For Telegram documentation see SetMyCommands.
Source§

fn get_my_commands(&self) -> Self::GetMyCommands

For Telegram documentation see GetMyCommands.
Source§

fn set_my_name(&self) -> Self::SetMyName

For Telegram documentation see SetMyName.
Source§

fn get_my_name(&self) -> Self::GetMyName

For Telegram documentation see GetMyName.
Source§

fn set_my_description(&self) -> Self::SetMyDescription

For Telegram documentation see SetMyDescription.
Source§

fn get_my_description(&self) -> Self::GetMyDescription

For Telegram documentation see GetMyDescription.
Source§

fn set_my_short_description(&self) -> Self::SetMyShortDescription

For Telegram documentation see SetMyShortDescription.
Source§

fn get_my_short_description(&self) -> Self::GetMyShortDescription

For Telegram documentation see GetMyShortDescription.
Source§

fn set_chat_menu_button(&self) -> Self::SetChatMenuButton

For Telegram documentation see SetChatMenuButton.
Source§

fn get_chat_menu_button(&self) -> Self::GetChatMenuButton

For Telegram documentation see GetChatMenuButton.
Source§

fn set_my_default_administrator_rights( &self, ) -> Self::SetMyDefaultAdministratorRights

For Telegram documentation see SetMyDefaultAdministratorRights.
Source§

fn get_my_default_administrator_rights( &self, ) -> Self::GetMyDefaultAdministratorRights

For Telegram documentation see GetMyDefaultAdministratorRights.
Source§

fn delete_my_commands(&self) -> Self::DeleteMyCommands

For Telegram documentation see DeleteMyCommands.
Source§

fn answer_inline_query<I, R>( &self, inline_query_id: I, results: R, ) -> Self::AnswerInlineQuery
where I: Into<String>, R: IntoIterator<Item = InlineQueryResult>,

For Telegram documentation see AnswerInlineQuery.
Source§

fn answer_web_app_query<W>( &self, web_app_query_id: W, result: InlineQueryResult, ) -> Self::AnswerWebAppQuery
where W: Into<String>,

For Telegram documentation see AnswerWebAppQuery.
Source§

fn edit_message_text<C, T>( &self, chat_id: C, message_id: MessageId, text: T, ) -> Self::EditMessageText
where C: Into<Recipient>, T: Into<String>,

For Telegram documentation see EditMessageText.
Source§

fn edit_message_text_inline<I, T>( &self, inline_message_id: I, text: T, ) -> Self::EditMessageTextInline
where I: Into<String>, T: Into<String>,

For Telegram documentation see EditMessageTextInline.
Source§

fn edit_message_caption<C>( &self, chat_id: C, message_id: MessageId, ) -> Self::EditMessageCaption
where C: Into<Recipient>,

For Telegram documentation see EditMessageCaption.
Source§

fn edit_message_caption_inline<I>( &self, inline_message_id: I, ) -> Self::EditMessageCaptionInline
where I: Into<String>,

For Telegram documentation see EditMessageCaptionInline.
Source§

fn edit_message_media<C>( &self, chat_id: C, message_id: MessageId, media: InputMedia, ) -> Self::EditMessageMedia
where C: Into<Recipient>,

For Telegram documentation see EditMessageMedia.
Source§

fn edit_message_media_inline<I>( &self, inline_message_id: I, media: InputMedia, ) -> Self::EditMessageMediaInline
where I: Into<String>,

For Telegram documentation see EditMessageMediaInline.
Source§

fn edit_message_reply_markup<C>( &self, chat_id: C, message_id: MessageId, ) -> Self::EditMessageReplyMarkup
where C: Into<Recipient>,

For Telegram documentation see EditMessageReplyMarkup.
Source§

fn edit_message_reply_markup_inline<I>( &self, inline_message_id: I, ) -> Self::EditMessageReplyMarkupInline
where I: Into<String>,

For Telegram documentation see EditMessageReplyMarkupInline.
Source§

fn stop_poll<C>(&self, chat_id: C, message_id: MessageId) -> Self::StopPoll
where C: Into<Recipient>,

For Telegram documentation see StopPoll.
Source§

fn delete_message<C>( &self, chat_id: C, message_id: MessageId, ) -> Self::DeleteMessage
where C: Into<Recipient>,

For Telegram documentation see DeleteMessage.
Source§

fn delete_messages<C, M>( &self, chat_id: C, message_ids: M, ) -> Self::DeleteMessages
where C: Into<Recipient>, M: IntoIterator<Item = MessageId>,

For Telegram documentation see DeleteMessages.
Source§

fn get_sticker_set<N>(&self, name: N) -> Self::GetStickerSet
where N: Into<String>,

For Telegram documentation see GetStickerSet.
Source§

fn get_custom_emoji_stickers<C>( &self, custom_emoji_ids: C, ) -> Self::GetCustomEmojiStickers
where C: IntoIterator<Item = String>,

For Telegram documentation see GetCustomEmojiStickers.
Source§

fn upload_sticker_file( &self, user_id: UserId, sticker: InputFile, sticker_format: StickerFormat, ) -> Self::UploadStickerFile

For Telegram documentation see UploadStickerFile.
Source§

fn create_new_sticker_set<N, T, S>( &self, user_id: UserId, name: N, title: T, stickers: S, sticker_format: StickerFormat, ) -> Self::CreateNewStickerSet
where N: Into<String>, T: Into<String>, S: IntoIterator<Item = InputSticker>,

For Telegram documentation see CreateNewStickerSet.
Source§

fn add_sticker_to_set<N>( &self, user_id: UserId, name: N, sticker: InputSticker, ) -> Self::AddStickerToSet
where N: Into<String>,

For Telegram documentation see AddStickerToSet.
Source§

fn set_sticker_position_in_set<S>( &self, sticker: S, position: u32, ) -> Self::SetStickerPositionInSet
where S: Into<String>,

For Telegram documentation see SetStickerPositionInSet.
Source§

fn delete_sticker_from_set<S>(&self, sticker: S) -> Self::DeleteStickerFromSet
where S: Into<String>,

For Telegram documentation see DeleteStickerFromSet.
Source§

fn set_sticker_set_thumbnail<N>( &self, name: N, user_id: UserId, ) -> Self::SetStickerSetThumbnail
where N: Into<String>,

For Telegram documentation see SetStickerSetThumbnail.
Source§

fn set_custom_emoji_sticker_set_thumbnail<N>( &self, name: N, ) -> Self::SetCustomEmojiStickerSetThumbnail
where N: Into<String>,

For Telegram documentation see SetCustomEmojiStickerSetThumbnail.
Source§

fn set_sticker_set_title<N, T>( &self, name: N, title: T, ) -> Self::SetStickerSetTitle
where N: Into<String>, T: Into<String>,

For Telegram documentation see SetStickerSetTitle.
Source§

fn delete_sticker_set<N>(&self, name: N) -> Self::DeleteStickerSet
where N: Into<String>,

For Telegram documentation see DeleteStickerSet.
Source§

fn set_sticker_emoji_list<S, E>( &self, sticker: S, emoji_list: E, ) -> Self::SetStickerEmojiList
where S: Into<String>, E: IntoIterator<Item = String>,

For Telegram documentation see SetStickerEmojiList.
Source§

fn set_sticker_keywords<S>(&self, sticker: S) -> Self::SetStickerKeywords
where S: Into<String>,

For Telegram documentation see SetStickerKeywords.
Source§

fn set_sticker_mask_position<S>( &self, sticker: S, ) -> Self::SetStickerMaskPosition
where S: Into<String>,

For Telegram documentation see SetStickerMaskPosition.
Source§

fn answer_shipping_query<S>( &self, shipping_query_id: S, ok: bool, ) -> Self::AnswerShippingQuery
where S: Into<String>,

For Telegram documentation see AnswerShippingQuery.
For Telegram documentation see CreateInvoiceLink.
Source§

fn answer_pre_checkout_query<P>( &self, pre_checkout_query_id: P, ok: bool, ) -> Self::AnswerPreCheckoutQuery
where P: Into<String>,

For Telegram documentation see AnswerPreCheckoutQuery.
Source§

fn set_passport_data_errors<E>( &self, user_id: UserId, errors: E, ) -> Self::SetPassportDataErrors

For Telegram documentation see SetPassportDataErrors.
Source§

fn send_game<C, G>(&self, chat_id: C, game_short_name: G) -> Self::SendGame
where C: Into<ChatId>, G: Into<String>,

For Telegram documentation see SendGame.
Source§

fn set_game_score( &self, user_id: UserId, score: u64, chat_id: u32, message_id: MessageId, ) -> Self::SetGameScore

For Telegram documentation see SetGameScore.
Source§

fn set_game_score_inline<I>( &self, user_id: UserId, score: u64, inline_message_id: I, ) -> Self::SetGameScoreInline
where I: Into<String>,

For Telegram documentation see SetGameScoreInline.
Source§

fn approve_chat_join_request<C>( &self, chat_id: C, user_id: UserId, ) -> Self::ApproveChatJoinRequest
where C: Into<Recipient>,

For Telegram documentation see ApproveChatJoinRequest.
Source§

fn decline_chat_join_request<C>( &self, chat_id: C, user_id: UserId, ) -> Self::DeclineChatJoinRequest
where C: Into<Recipient>,

For Telegram documentation see DeclineChatJoinRequest.
Source§

fn get_game_high_scores<T>( &self, user_id: UserId, target: T, ) -> Self::GetGameHighScores
where T: Into<TargetMessage>,

For Telegram documentation see GetGameHighScores.

Auto Trait Implementations§

§

impl<B> Freeze for Throttle<B>
where B: Freeze,

§

impl<B> !RefUnwindSafe for Throttle<B>

§

impl<B> Send for Throttle<B>
where B: Send,

§

impl<B> Sync for Throttle<B>
where B: Sync,

§

impl<B> Unpin for Throttle<B>
where B: Unpin,

§

impl<B> !UnwindSafe for Throttle<B>

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<T> CloneToUninit for T
where T: Clone,

Source§

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

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

impl<T> Erasable for T

Source§

const ACK_1_1_0: bool = true

Available on non-enforce_1_1_0_semantics only.
Whether this implementor has acknowledged the 1.1.0 update to unerase’s documented implementation requirements. Read more
Source§

unsafe fn unerase(this: NonNull<Erased>) -> NonNull<T>

Unerase this erased pointer. Read more
Source§

fn erase(this: NonNull<Self>) -> NonNull<Erased>

Turn this erasable pointer into an erased pointer. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> RequesterExt for T
where T: Requester,

Source§

fn cache_me(self) -> CacheMe<Self>
where Self: Sized,

Available on crate feature cache_me only.
Add get_me caching ability, see CacheMe for more.
Source§

fn erase<'a>(self) -> ErasedRequester<'a, Self::Err>
where Self: 'a + Sized,

Available on crate feature erased only.
Erase requester type.
Source§

fn trace(self, settings: Settings) -> Trace<Self>
where Self: Sized,

Available on crate feature trace_adaptor only.
Trace requests, see Trace for more.
Source§

fn throttle(self, limits: Limits) -> Throttle<Self>
where Self: Sized + Clone + Send + Sync + 'static, Self::Err: AsResponseParameters, Self::GetChat: Send,

Available on crate feature throttle only.
Add throttling ability, see Throttle for more. Read more
Source§

fn parse_mode(self, parse_mode: ParseMode) -> DefaultParseMode<Self>
where Self: Sized,

Specifies default ParseMode, which will be used during all calls to: Read more
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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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<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