Struct teloxide_core::adaptors::throttle::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>

§

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

An error returned from download_file.
§

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

A future returned from download_file.
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
§

type StreamErr = <B as Download>::StreamErr

An error returned from download_file_stream.
§

type Stream = <B as Download>::Stream

A stream returned from download_file_stream.
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,

§

type Err = <B as Requester>::Err

Error type returned by all requests.
§

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

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

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

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

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

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

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

source§

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

For Telegram documentation see SendPhoto.
§

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

source§

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

For Telegram documentation see SendAudio.
§

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

source§

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

For Telegram documentation see SendDocument.
§

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

source§

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

For Telegram documentation see SendVideo.
§

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

source§

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

For Telegram documentation see SendAnimation.
§

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

source§

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

For Telegram documentation see SendVoice.
§

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

source§

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

For Telegram documentation see SendVideoNote.
§

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

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

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

source§

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

For Telegram documentation see SendLocation.
§

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

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

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

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

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

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

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

source§

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

For Telegram documentation see SendDice.
§

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

source§

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

For Telegram documentation see SendSticker.
§

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

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

type GetMe = <B as Requester>::GetMe

source§

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

For Telegram documentation see GetMe.
§

type LogOut = <B as Requester>::LogOut

source§

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

For Telegram documentation see LogOut.
§

type Close = <B as Requester>::Close

source§

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

For Telegram documentation see Close.
§

type GetUpdates = <B as Requester>::GetUpdates

source§

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

For Telegram documentation see GetUpdates.
§

type SetWebhook = <B as Requester>::SetWebhook

source§

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

For Telegram documentation see SetWebhook.
§

type DeleteWebhook = <B as Requester>::DeleteWebhook

source§

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

For Telegram documentation see DeleteWebhook.
§

type GetWebhookInfo = <B as Requester>::GetWebhookInfo

source§

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

For Telegram documentation see GetWebhookInfo.
§

type ForwardMessages = <B as Requester>::ForwardMessages

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

type CopyMessages = <B as Requester>::CopyMessages

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

type EditMessageLiveLocation = <B as Requester>::EditMessageLiveLocation

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

type EditMessageLiveLocationInline = <B as Requester>::EditMessageLiveLocationInline

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

type StopMessageLiveLocation = <B as Requester>::StopMessageLiveLocation

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

type StopMessageLiveLocationInline = <B as Requester>::StopMessageLiveLocationInline

source§

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

For Telegram documentation see StopMessageLiveLocationInline.
§

type SendChatAction = <B as Requester>::SendChatAction

source§

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

For Telegram documentation see SendChatAction.
§

type SetMessageReaction = <B as Requester>::SetMessageReaction

source§

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

For Telegram documentation see SetMessageReaction.
§

type GetUserProfilePhotos = <B as Requester>::GetUserProfilePhotos

source§

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

For Telegram documentation see GetUserProfilePhotos.
§

type GetFile = <B as Requester>::GetFile

source§

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

For Telegram documentation see GetFile.
§

type KickChatMember = <B as Requester>::KickChatMember

source§

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

For Telegram documentation see KickChatMember.
§

type BanChatMember = <B as Requester>::BanChatMember

source§

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

For Telegram documentation see BanChatMember.
§

type UnbanChatMember = <B as Requester>::UnbanChatMember

source§

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

For Telegram documentation see UnbanChatMember.
§

type RestrictChatMember = <B as Requester>::RestrictChatMember

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

type PromoteChatMember = <B as Requester>::PromoteChatMember

source§

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

For Telegram documentation see PromoteChatMember.
§

type SetChatAdministratorCustomTitle = <B as Requester>::SetChatAdministratorCustomTitle

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

type BanChatSenderChat = <B as Requester>::BanChatSenderChat

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

type UnbanChatSenderChat = <B as Requester>::UnbanChatSenderChat

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

type SetChatPermissions = <B as Requester>::SetChatPermissions

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

type SetChatPhoto = <B as Requester>::SetChatPhoto

source§

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

For Telegram documentation see SetChatPhoto.
§

type DeleteChatPhoto = <B as Requester>::DeleteChatPhoto

source§

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

For Telegram documentation see DeleteChatPhoto.
§

type SetChatTitle = <B as Requester>::SetChatTitle

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

type SetChatDescription = <B as Requester>::SetChatDescription

source§

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

For Telegram documentation see SetChatDescription.
§

type PinChatMessage = <B as Requester>::PinChatMessage

source§

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

For Telegram documentation see PinChatMessage.
§

type UnpinChatMessage = <B as Requester>::UnpinChatMessage

source§

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

For Telegram documentation see UnpinChatMessage.
§

type UnpinAllChatMessages = <B as Requester>::UnpinAllChatMessages

source§

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

For Telegram documentation see UnpinAllChatMessages.
§

type LeaveChat = <B as Requester>::LeaveChat

source§

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

For Telegram documentation see LeaveChat.
§

type GetChat = <B as Requester>::GetChat

source§

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

For Telegram documentation see GetChat.
§

type GetChatAdministrators = <B as Requester>::GetChatAdministrators

source§

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

For Telegram documentation see GetChatAdministrators.
§

type GetChatMembersCount = <B as Requester>::GetChatMembersCount

source§

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

For Telegram documentation see GetChatMembersCount.
§

type GetChatMemberCount = <B as Requester>::GetChatMemberCount

source§

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

For Telegram documentation see GetChatMemberCount.
§

type GetChatMember = <B as Requester>::GetChatMember

source§

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

For Telegram documentation see GetChatMember.
§

type SetChatStickerSet = <B as Requester>::SetChatStickerSet

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

type DeleteChatStickerSet = <B as Requester>::DeleteChatStickerSet

source§

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

For Telegram documentation see DeleteChatStickerSet.
§

type GetForumTopicIconStickers = <B as Requester>::GetForumTopicIconStickers

source§

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

For Telegram documentation see GetForumTopicIconStickers.
§

type CreateForumTopic = <B as Requester>::CreateForumTopic

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

type EditForumTopic = <B as Requester>::EditForumTopic

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

type CloseForumTopic = <B as Requester>::CloseForumTopic

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

type ReopenForumTopic = <B as Requester>::ReopenForumTopic

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

type DeleteForumTopic = <B as Requester>::DeleteForumTopic

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

type UnpinAllForumTopicMessages = <B as Requester>::UnpinAllForumTopicMessages

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

type EditGeneralForumTopic = <B as Requester>::EditGeneralForumTopic

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

type CloseGeneralForumTopic = <B as Requester>::CloseGeneralForumTopic

source§

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

For Telegram documentation see CloseGeneralForumTopic.
§

type ReopenGeneralForumTopic = <B as Requester>::ReopenGeneralForumTopic

source§

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

For Telegram documentation see ReopenGeneralForumTopic.
§

type HideGeneralForumTopic = <B as Requester>::HideGeneralForumTopic

source§

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

For Telegram documentation see HideGeneralForumTopic.
§

type UnhideGeneralForumTopic = <B as Requester>::UnhideGeneralForumTopic

source§

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

For Telegram documentation see UnhideGeneralForumTopic.
§

type UnpinAllGeneralForumTopicMessages = <B as Requester>::UnpinAllGeneralForumTopicMessages

source§

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

For Telegram documentation see UnpinAllGeneralForumTopicMessages.
§

type AnswerCallbackQuery = <B as Requester>::AnswerCallbackQuery

source§

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

For Telegram documentation see AnswerCallbackQuery.
§

type GetUserChatBoosts = <B as Requester>::GetUserChatBoosts

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

type SetMyCommands = <B as Requester>::SetMyCommands

source§

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

For Telegram documentation see SetMyCommands.
§

type GetMyCommands = <B as Requester>::GetMyCommands

source§

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

For Telegram documentation see GetMyCommands.
§

type SetMyName = <B as Requester>::SetMyName

source§

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

For Telegram documentation see SetMyName.
§

type GetMyName = <B as Requester>::GetMyName

source§

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

For Telegram documentation see GetMyName.
§

type SetMyDescription = <B as Requester>::SetMyDescription

source§

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

For Telegram documentation see SetMyDescription.
§

type GetMyDescription = <B as Requester>::GetMyDescription

source§

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

For Telegram documentation see GetMyDescription.
§

type SetMyShortDescription = <B as Requester>::SetMyShortDescription

source§

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

For Telegram documentation see SetMyShortDescription.
§

type GetMyShortDescription = <B as Requester>::GetMyShortDescription

source§

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

For Telegram documentation see GetMyShortDescription.
§

type SetChatMenuButton = <B as Requester>::SetChatMenuButton

source§

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

For Telegram documentation see SetChatMenuButton.
§

type GetChatMenuButton = <B as Requester>::GetChatMenuButton

source§

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

For Telegram documentation see GetChatMenuButton.
§

type SetMyDefaultAdministratorRights = <B as Requester>::SetMyDefaultAdministratorRights

source§

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

For Telegram documentation see SetMyDefaultAdministratorRights.
§

type GetMyDefaultAdministratorRights = <B as Requester>::GetMyDefaultAdministratorRights

source§

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

For Telegram documentation see GetMyDefaultAdministratorRights.
§

type DeleteMyCommands = <B as Requester>::DeleteMyCommands

source§

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

For Telegram documentation see DeleteMyCommands.
§

type AnswerInlineQuery = <B as Requester>::AnswerInlineQuery

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

type AnswerWebAppQuery = <B as Requester>::AnswerWebAppQuery

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

type EditMessageText = <B as Requester>::EditMessageText

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

type EditMessageTextInline = <B as Requester>::EditMessageTextInline

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

type EditMessageCaption = <B as Requester>::EditMessageCaption

source§

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

For Telegram documentation see EditMessageCaption.
§

type EditMessageCaptionInline = <B as Requester>::EditMessageCaptionInline

source§

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

For Telegram documentation see EditMessageCaptionInline.
§

type EditMessageMedia = <B as Requester>::EditMessageMedia

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

type EditMessageMediaInline = <B as Requester>::EditMessageMediaInline

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

type EditMessageReplyMarkup = <B as Requester>::EditMessageReplyMarkup

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

type EditMessageReplyMarkupInline = <B as Requester>::EditMessageReplyMarkupInline

source§

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

For Telegram documentation see EditMessageReplyMarkupInline.
§

type StopPoll = <B as Requester>::StopPoll

source§

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

For Telegram documentation see StopPoll.
§

type DeleteMessage = <B as Requester>::DeleteMessage

source§

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

For Telegram documentation see DeleteMessage.
§

type DeleteMessages = <B as Requester>::DeleteMessages

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

type GetStickerSet = <B as Requester>::GetStickerSet

source§

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

For Telegram documentation see GetStickerSet.
§

type GetCustomEmojiStickers = <B as Requester>::GetCustomEmojiStickers

source§

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

For Telegram documentation see GetCustomEmojiStickers.
§

type UploadStickerFile = <B as Requester>::UploadStickerFile

source§

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

For Telegram documentation see UploadStickerFile.
§

type CreateNewStickerSet = <B as Requester>::CreateNewStickerSet

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

type AddStickerToSet = <B as Requester>::AddStickerToSet

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

type SetStickerPositionInSet = <B as Requester>::SetStickerPositionInSet

source§

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

For Telegram documentation see SetStickerPositionInSet.
§

type DeleteStickerFromSet = <B as Requester>::DeleteStickerFromSet

source§

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

For Telegram documentation see DeleteStickerFromSet.
§

type SetStickerSetThumbnail = <B as Requester>::SetStickerSetThumbnail

source§

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

For Telegram documentation see SetStickerSetThumbnail.
§

type SetCustomEmojiStickerSetThumbnail = <B as Requester>::SetCustomEmojiStickerSetThumbnail

source§

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

For Telegram documentation see SetCustomEmojiStickerSetThumbnail.
§

type SetStickerSetTitle = <B as Requester>::SetStickerSetTitle

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

type DeleteStickerSet = <B as Requester>::DeleteStickerSet

source§

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

For Telegram documentation see DeleteStickerSet.
§

type SetStickerEmojiList = <B as Requester>::SetStickerEmojiList

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

type SetStickerKeywords = <B as Requester>::SetStickerKeywords

source§

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

For Telegram documentation see SetStickerKeywords.
§

type SetStickerMaskPosition = <B as Requester>::SetStickerMaskPosition

source§

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

For Telegram documentation see SetStickerMaskPosition.
§

type AnswerShippingQuery = <B as Requester>::AnswerShippingQuery

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

type AnswerPreCheckoutQuery = <B as Requester>::AnswerPreCheckoutQuery

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

type SetPassportDataErrors = <B as Requester>::SetPassportDataErrors

source§

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

For Telegram documentation see SetPassportDataErrors.
§

type SendGame = <B as Requester>::SendGame

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

type SetGameScore = <B as Requester>::SetGameScore

source§

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

For Telegram documentation see SetGameScore.
§

type SetGameScoreInline = <B as Requester>::SetGameScoreInline

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

type ApproveChatJoinRequest = <B as Requester>::ApproveChatJoinRequest

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

type DeclineChatJoinRequest = <B as Requester>::DeclineChatJoinRequest

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

type GetGameHighScores = <B as Requester>::GetGameHighScores

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§

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

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

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

Unerase this erased pointer. Read more
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§

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,

§

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

§

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

§

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