Struct teloxide_core::adaptors::throttle::Throttle
source · pub struct Throttle<B> { /* private fields */ }
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_id
s 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>
impl<B> Throttle<B>
sourcepub fn new(bot: B, limits: Limits) -> (Self, impl Future<Output = ()>)where
B: Requester + Clone,
B::Err: AsResponseParameters,
pub fn new(bot: B, limits: Limits) -> (Self, impl Future<Output = ()>)where B: Requester + Clone, B::Err: AsResponseParameters,
sourcepub fn with_settings(
bot: B,
settings: Settings
) -> (Self, impl Future<Output = ()>)where
B: Requester + Clone,
B::Err: AsResponseParameters,
pub fn with_settings( bot: B, settings: Settings ) -> (Self, impl Future<Output = ()>)where B: Requester + Clone, B::Err: AsResponseParameters,
sourcepub fn new_spawn(bot: B, limits: Limits) -> Selfwhere
B: Requester + Clone + Send + Sync + 'static,
B::Err: AsResponseParameters,
B::GetChat: Send,
pub fn new_spawn(bot: B, limits: Limits) -> Selfwhere 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.
sourcepub fn spawn_with_settings(bot: B, settings: Settings) -> Selfwhere
B: Requester + Clone + Send + Sync + 'static,
B::Err: AsResponseParameters,
B::GetChat: Send,
pub fn spawn_with_settings(bot: B, settings: Settings) -> Selfwhere B: Requester + Clone + Send + Sync + 'static, B::Err: AsResponseParameters, B::GetChat: Send,
Creates new Throttle
spawning the worker with tokio::spawn
sourcepub fn into_inner(self) -> B
pub fn into_inner(self) -> B
Unwraps inner bot
sourcepub async fn set_limits(&self, new: Limits)
pub async fn set_limits(&self, new: Limits)
Sets new limits.
Note: changes may not be applied immediately.
Trait Implementations§
source§impl<'w, B: Download<'w>> Download<'w> for Throttle<B>
impl<'w, B: Download<'w>> Download<'w> for Throttle<B>
§type Err = <B as Download<'w>>::Err
type Err = <B as Download<'w>>::Err
download_file
.§type Fut = <B as Download<'w>>::Fut
type Fut = <B as Download<'w>>::Fut
download_file
.source§fn download_file(
&self,
path: &str,
destination: &'w mut (dyn AsyncWrite + Unpin + Send)
) -> Self::Fut
fn download_file( &self, path: &str, destination: &'w mut (dyn AsyncWrite + Unpin + Send) ) -> Self::Fut
destination
. Read more§type StreamErr = <B as Download<'w>>::StreamErr
type StreamErr = <B as Download<'w>>::StreamErr
download_file_stream
.§type Stream = <B as Download<'w>>::Stream
type Stream = <B as Download<'w>>::Stream
download_file_stream
.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,
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 SendMessage = ThrottlingRequest<<B as Requester>::SendMessage>
source§fn send_message<C, T>(&self, chat_id: C, text: T) -> Self::SendMessagewhere
C: Into<Recipient>,
T: Into<String>,
fn send_message<C, T>(&self, chat_id: C, text: T) -> Self::SendMessagewhere C: Into<Recipient>, T: Into<String>,
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::ForwardMessagewhere
C: Into<Recipient>,
F: Into<Recipient>,
fn forward_message<C, F>( &self, chat_id: C, from_chat_id: F, message_id: MessageId ) -> Self::ForwardMessagewhere C: Into<Recipient>, F: Into<Recipient>,
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::CopyMessagewhere
C: Into<Recipient>,
F: Into<Recipient>,
fn copy_message<C, F>( &self, chat_id: C, from_chat_id: F, message_id: MessageId ) -> Self::CopyMessagewhere C: Into<Recipient>, F: Into<Recipient>,
CopyMessage
.type SendPhoto = ThrottlingRequest<<B as Requester>::SendPhoto>
source§fn send_photo<C>(&self, chat_id: C, photo: InputFile) -> Self::SendPhotowhere
C: Into<Recipient>,
fn send_photo<C>(&self, chat_id: C, photo: InputFile) -> Self::SendPhotowhere C: Into<Recipient>,
SendPhoto
.type SendAudio = ThrottlingRequest<<B as Requester>::SendAudio>
source§fn send_audio<C>(&self, chat_id: C, audio: InputFile) -> Self::SendAudiowhere
C: Into<Recipient>,
fn send_audio<C>(&self, chat_id: C, audio: InputFile) -> Self::SendAudiowhere C: Into<Recipient>,
SendAudio
.type SendDocument = ThrottlingRequest<<B as Requester>::SendDocument>
source§fn send_document<C>(&self, chat_id: C, document: InputFile) -> Self::SendDocumentwhere
C: Into<Recipient>,
fn send_document<C>(&self, chat_id: C, document: InputFile) -> Self::SendDocumentwhere C: Into<Recipient>,
SendDocument
.type SendVideo = ThrottlingRequest<<B as Requester>::SendVideo>
source§fn send_video<C>(&self, chat_id: C, video: InputFile) -> Self::SendVideowhere
C: Into<Recipient>,
fn send_video<C>(&self, chat_id: C, video: InputFile) -> Self::SendVideowhere C: Into<Recipient>,
SendVideo
.type SendAnimation = ThrottlingRequest<<B as Requester>::SendAnimation>
source§fn send_animation<C>(
&self,
chat_id: C,
animation: InputFile
) -> Self::SendAnimationwhere
C: Into<Recipient>,
fn send_animation<C>( &self, chat_id: C, animation: InputFile ) -> Self::SendAnimationwhere C: Into<Recipient>,
SendAnimation
.type SendVoice = ThrottlingRequest<<B as Requester>::SendVoice>
source§fn send_voice<C>(&self, chat_id: C, voice: InputFile) -> Self::SendVoicewhere
C: Into<Recipient>,
fn send_voice<C>(&self, chat_id: C, voice: InputFile) -> Self::SendVoicewhere C: Into<Recipient>,
SendVoice
.type SendVideoNote = ThrottlingRequest<<B as Requester>::SendVideoNote>
source§fn send_video_note<C>(
&self,
chat_id: C,
video_note: InputFile
) -> Self::SendVideoNotewhere
C: Into<Recipient>,
fn send_video_note<C>( &self, chat_id: C, video_note: InputFile ) -> Self::SendVideoNotewhere C: Into<Recipient>,
SendVideoNote
.type SendMediaGroup = ThrottlingRequest<<B as Requester>::SendMediaGroup>
source§fn send_media_group<C, M>(&self, chat_id: C, media: M) -> Self::SendMediaGroupwhere
C: Into<Recipient>,
M: IntoIterator<Item = InputMedia>,
fn send_media_group<C, M>(&self, chat_id: C, media: M) -> Self::SendMediaGroupwhere C: Into<Recipient>, M: IntoIterator<Item = InputMedia>,
SendMediaGroup
.type SendLocation = ThrottlingRequest<<B as Requester>::SendLocation>
source§fn send_location<C>(
&self,
chat_id: C,
latitude: f64,
longitude: f64
) -> Self::SendLocationwhere
C: Into<Recipient>,
fn send_location<C>( &self, chat_id: C, latitude: f64, longitude: f64 ) -> Self::SendLocationwhere C: Into<Recipient>,
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::SendVenuewhere
C: Into<Recipient>,
T: Into<String>,
A: Into<String>,
fn send_venue<C, T, A>( &self, chat_id: C, latitude: f64, longitude: f64, title: T, address: A ) -> Self::SendVenuewhere C: Into<Recipient>, T: Into<String>, A: Into<String>,
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::SendContactwhere
C: Into<Recipient>,
P: Into<String>,
F: Into<String>,
fn send_contact<C, P, F>( &self, chat_id: C, phone_number: P, first_name: F ) -> Self::SendContactwhere C: Into<Recipient>, P: Into<String>, F: Into<String>,
SendContact
.type SendPoll = ThrottlingRequest<<B as Requester>::SendPoll>
source§fn send_poll<C, Q, O>(&self, chat_id: C, question: Q, options: O) -> Self::SendPollwhere
C: Into<Recipient>,
Q: Into<String>,
O: IntoIterator<Item = String>,
fn send_poll<C, Q, O>(&self, chat_id: C, question: Q, options: O) -> Self::SendPollwhere C: Into<Recipient>, Q: Into<String>, O: IntoIterator<Item = String>,
SendPoll
.type SendDice = ThrottlingRequest<<B as Requester>::SendDice>
source§fn send_dice<C>(&self, chat_id: C) -> Self::SendDicewhere
C: Into<Recipient>,
fn send_dice<C>(&self, chat_id: C) -> Self::SendDicewhere C: Into<Recipient>,
SendDice
.type SendSticker = ThrottlingRequest<<B as Requester>::SendSticker>
source§fn send_sticker<C>(&self, chat_id: C, sticker: InputFile) -> Self::SendStickerwhere
C: Into<Recipient>,
fn send_sticker<C>(&self, chat_id: C, sticker: InputFile) -> Self::SendStickerwhere C: Into<Recipient>,
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::SendInvoicewhere
Ch: Into<Recipient>,
T: Into<String>,
D: Into<String>,
Pa: Into<String>,
P: Into<String>,
C: Into<String>,
Pri: IntoIterator<Item = LabeledPrice>,
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::SendInvoicewhere Ch: Into<Recipient>, T: Into<String>, D: Into<String>, Pa: Into<String>, P: Into<String>, C: Into<String>, Pri: IntoIterator<Item = LabeledPrice>,
SendInvoice
.type GetMe = <B as Requester>::GetMe
type LogOut = <B as Requester>::LogOut
type Close = <B as Requester>::Close
type GetUpdates = <B as Requester>::GetUpdates
source§fn get_updates(&self) -> Self::GetUpdates
fn get_updates(&self) -> Self::GetUpdates
GetUpdates
.type SetWebhook = <B as Requester>::SetWebhook
source§fn set_webhook(&self, url: Url) -> Self::SetWebhook
fn set_webhook(&self, url: Url) -> Self::SetWebhook
SetWebhook
.type DeleteWebhook = <B as Requester>::DeleteWebhook
source§fn delete_webhook(&self) -> Self::DeleteWebhook
fn delete_webhook(&self) -> Self::DeleteWebhook
DeleteWebhook
.type GetWebhookInfo = <B as Requester>::GetWebhookInfo
source§fn get_webhook_info(&self) -> Self::GetWebhookInfo
fn get_webhook_info(&self) -> Self::GetWebhookInfo
GetWebhookInfo
.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::EditMessageLiveLocationwhere
C: Into<Recipient>,
fn edit_message_live_location<C>( &self, chat_id: C, message_id: MessageId, latitude: f64, longitude: f64 ) -> Self::EditMessageLiveLocationwhere C: Into<Recipient>,
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::EditMessageLiveLocationInlinewhere
I: Into<String>,
fn edit_message_live_location_inline<I>( &self, inline_message_id: I, latitude: f64, longitude: f64 ) -> Self::EditMessageLiveLocationInlinewhere I: Into<String>,
EditMessageLiveLocationInline
.type StopMessageLiveLocation = <B as Requester>::StopMessageLiveLocation
source§fn stop_message_live_location<C>(
&self,
chat_id: C,
message_id: MessageId,
latitude: f64,
longitude: f64
) -> Self::StopMessageLiveLocationwhere
C: Into<Recipient>,
fn stop_message_live_location<C>( &self, chat_id: C, message_id: MessageId, latitude: f64, longitude: f64 ) -> Self::StopMessageLiveLocationwhere C: Into<Recipient>,
StopMessageLiveLocation
.type StopMessageLiveLocationInline = <B as Requester>::StopMessageLiveLocationInline
source§fn stop_message_live_location_inline<I>(
&self,
inline_message_id: I,
latitude: f64,
longitude: f64
) -> Self::StopMessageLiveLocationInlinewhere
I: Into<String>,
fn stop_message_live_location_inline<I>( &self, inline_message_id: I, latitude: f64, longitude: f64 ) -> Self::StopMessageLiveLocationInlinewhere I: Into<String>,
StopMessageLiveLocationInline
.type SendChatAction = <B as Requester>::SendChatAction
source§fn send_chat_action<C>(
&self,
chat_id: C,
action: ChatAction
) -> Self::SendChatActionwhere
C: Into<Recipient>,
fn send_chat_action<C>( &self, chat_id: C, action: ChatAction ) -> Self::SendChatActionwhere C: Into<Recipient>,
SendChatAction
.type GetUserProfilePhotos = <B as Requester>::GetUserProfilePhotos
source§fn get_user_profile_photos(&self, user_id: UserId) -> Self::GetUserProfilePhotos
fn get_user_profile_photos(&self, user_id: UserId) -> Self::GetUserProfilePhotos
GetUserProfilePhotos
.type GetFile = <B as Requester>::GetFile
source§fn get_file<F>(&self, file_id: F) -> Self::GetFilewhere
F: Into<String>,
fn get_file<F>(&self, file_id: F) -> Self::GetFilewhere F: Into<String>,
GetFile
.type KickChatMember = <B as Requester>::KickChatMember
source§fn kick_chat_member<C>(&self, chat_id: C, user_id: UserId) -> Self::KickChatMemberwhere
C: Into<Recipient>,
fn kick_chat_member<C>(&self, chat_id: C, user_id: UserId) -> Self::KickChatMemberwhere C: Into<Recipient>,
KickChatMember
.type BanChatMember = <B as Requester>::BanChatMember
source§fn ban_chat_member<C>(&self, chat_id: C, user_id: UserId) -> Self::BanChatMemberwhere
C: Into<Recipient>,
fn ban_chat_member<C>(&self, chat_id: C, user_id: UserId) -> Self::BanChatMemberwhere C: Into<Recipient>,
BanChatMember
.type UnbanChatMember = <B as Requester>::UnbanChatMember
source§fn unban_chat_member<C>(
&self,
chat_id: C,
user_id: UserId
) -> Self::UnbanChatMemberwhere
C: Into<Recipient>,
fn unban_chat_member<C>( &self, chat_id: C, user_id: UserId ) -> Self::UnbanChatMemberwhere C: Into<Recipient>,
UnbanChatMember
.type RestrictChatMember = <B as Requester>::RestrictChatMember
source§fn restrict_chat_member<C>(
&self,
chat_id: C,
user_id: UserId,
permissions: ChatPermissions
) -> Self::RestrictChatMemberwhere
C: Into<Recipient>,
fn restrict_chat_member<C>( &self, chat_id: C, user_id: UserId, permissions: ChatPermissions ) -> Self::RestrictChatMemberwhere C: Into<Recipient>,
RestrictChatMember
.type PromoteChatMember = <B as Requester>::PromoteChatMember
source§fn promote_chat_member<C>(
&self,
chat_id: C,
user_id: UserId
) -> Self::PromoteChatMemberwhere
C: Into<Recipient>,
fn promote_chat_member<C>( &self, chat_id: C, user_id: UserId ) -> Self::PromoteChatMemberwhere C: Into<Recipient>,
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::SetChatAdministratorCustomTitlewhere
Ch: Into<Recipient>,
C: Into<String>,
fn set_chat_administrator_custom_title<Ch, C>( &self, chat_id: Ch, user_id: UserId, custom_title: C ) -> Self::SetChatAdministratorCustomTitlewhere Ch: Into<Recipient>, C: Into<String>,
SetChatAdministratorCustomTitle
.type BanChatSenderChat = <B as Requester>::BanChatSenderChat
source§fn ban_chat_sender_chat<C, S>(
&self,
chat_id: C,
sender_chat_id: S
) -> Self::BanChatSenderChatwhere
C: Into<Recipient>,
S: Into<ChatId>,
fn ban_chat_sender_chat<C, S>( &self, chat_id: C, sender_chat_id: S ) -> Self::BanChatSenderChatwhere C: Into<Recipient>, S: Into<ChatId>,
BanChatSenderChat
.type UnbanChatSenderChat = <B as Requester>::UnbanChatSenderChat
source§fn unban_chat_sender_chat<C, S>(
&self,
chat_id: C,
sender_chat_id: S
) -> Self::UnbanChatSenderChatwhere
C: Into<Recipient>,
S: Into<ChatId>,
fn unban_chat_sender_chat<C, S>( &self, chat_id: C, sender_chat_id: S ) -> Self::UnbanChatSenderChatwhere C: Into<Recipient>, S: Into<ChatId>,
UnbanChatSenderChat
.type SetChatPermissions = <B as Requester>::SetChatPermissions
source§fn set_chat_permissions<C>(
&self,
chat_id: C,
permissions: ChatPermissions
) -> Self::SetChatPermissionswhere
C: Into<Recipient>,
fn set_chat_permissions<C>( &self, chat_id: C, permissions: ChatPermissions ) -> Self::SetChatPermissionswhere C: Into<Recipient>,
SetChatPermissions
.type ExportChatInviteLink = <B as Requester>::ExportChatInviteLink
source§fn export_chat_invite_link<C>(&self, chat_id: C) -> Self::ExportChatInviteLinkwhere
C: Into<Recipient>,
fn export_chat_invite_link<C>(&self, chat_id: C) -> Self::ExportChatInviteLinkwhere C: Into<Recipient>,
ExportChatInviteLink
.type CreateChatInviteLink = <B as Requester>::CreateChatInviteLink
source§fn create_chat_invite_link<C>(&self, chat_id: C) -> Self::CreateChatInviteLinkwhere
C: Into<Recipient>,
fn create_chat_invite_link<C>(&self, chat_id: C) -> Self::CreateChatInviteLinkwhere C: Into<Recipient>,
CreateChatInviteLink
.type EditChatInviteLink = <B as Requester>::EditChatInviteLink
source§fn edit_chat_invite_link<C, I>(
&self,
chat_id: C,
invite_link: I
) -> Self::EditChatInviteLinkwhere
C: Into<Recipient>,
I: Into<String>,
fn edit_chat_invite_link<C, I>( &self, chat_id: C, invite_link: I ) -> Self::EditChatInviteLinkwhere C: Into<Recipient>, I: Into<String>,
EditChatInviteLink
.type RevokeChatInviteLink = <B as Requester>::RevokeChatInviteLink
source§fn revoke_chat_invite_link<C, I>(
&self,
chat_id: C,
invite_link: I
) -> Self::RevokeChatInviteLinkwhere
C: Into<Recipient>,
I: Into<String>,
fn revoke_chat_invite_link<C, I>( &self, chat_id: C, invite_link: I ) -> Self::RevokeChatInviteLinkwhere C: Into<Recipient>, I: Into<String>,
RevokeChatInviteLink
.type SetChatPhoto = <B as Requester>::SetChatPhoto
source§fn set_chat_photo<C>(&self, chat_id: C, photo: InputFile) -> Self::SetChatPhotowhere
C: Into<Recipient>,
fn set_chat_photo<C>(&self, chat_id: C, photo: InputFile) -> Self::SetChatPhotowhere C: Into<Recipient>,
SetChatPhoto
.type DeleteChatPhoto = <B as Requester>::DeleteChatPhoto
source§fn delete_chat_photo<C>(&self, chat_id: C) -> Self::DeleteChatPhotowhere
C: Into<Recipient>,
fn delete_chat_photo<C>(&self, chat_id: C) -> Self::DeleteChatPhotowhere C: Into<Recipient>,
DeleteChatPhoto
.type SetChatTitle = <B as Requester>::SetChatTitle
source§fn set_chat_title<C, T>(&self, chat_id: C, title: T) -> Self::SetChatTitlewhere
C: Into<Recipient>,
T: Into<String>,
fn set_chat_title<C, T>(&self, chat_id: C, title: T) -> Self::SetChatTitlewhere C: Into<Recipient>, T: Into<String>,
SetChatTitle
.type SetChatDescription = <B as Requester>::SetChatDescription
source§fn set_chat_description<C>(&self, chat_id: C) -> Self::SetChatDescriptionwhere
C: Into<Recipient>,
fn set_chat_description<C>(&self, chat_id: C) -> Self::SetChatDescriptionwhere C: Into<Recipient>,
SetChatDescription
.type PinChatMessage = <B as Requester>::PinChatMessage
source§fn pin_chat_message<C>(
&self,
chat_id: C,
message_id: MessageId
) -> Self::PinChatMessagewhere
C: Into<Recipient>,
fn pin_chat_message<C>( &self, chat_id: C, message_id: MessageId ) -> Self::PinChatMessagewhere C: Into<Recipient>,
PinChatMessage
.type UnpinChatMessage = <B as Requester>::UnpinChatMessage
source§fn unpin_chat_message<C>(&self, chat_id: C) -> Self::UnpinChatMessagewhere
C: Into<Recipient>,
fn unpin_chat_message<C>(&self, chat_id: C) -> Self::UnpinChatMessagewhere C: Into<Recipient>,
UnpinChatMessage
.type UnpinAllChatMessages = <B as Requester>::UnpinAllChatMessages
source§fn unpin_all_chat_messages<C>(&self, chat_id: C) -> Self::UnpinAllChatMessageswhere
C: Into<Recipient>,
fn unpin_all_chat_messages<C>(&self, chat_id: C) -> Self::UnpinAllChatMessageswhere C: Into<Recipient>,
UnpinAllChatMessages
.type LeaveChat = <B as Requester>::LeaveChat
source§fn leave_chat<C>(&self, chat_id: C) -> Self::LeaveChatwhere
C: Into<Recipient>,
fn leave_chat<C>(&self, chat_id: C) -> Self::LeaveChatwhere C: Into<Recipient>,
LeaveChat
.type GetChat = <B as Requester>::GetChat
source§fn get_chat<C>(&self, chat_id: C) -> Self::GetChatwhere
C: Into<Recipient>,
fn get_chat<C>(&self, chat_id: C) -> Self::GetChatwhere C: Into<Recipient>,
GetChat
.type GetChatAdministrators = <B as Requester>::GetChatAdministrators
source§fn get_chat_administrators<C>(&self, chat_id: C) -> Self::GetChatAdministratorswhere
C: Into<Recipient>,
fn get_chat_administrators<C>(&self, chat_id: C) -> Self::GetChatAdministratorswhere C: Into<Recipient>,
GetChatAdministrators
.type GetChatMembersCount = <B as Requester>::GetChatMembersCount
source§fn get_chat_members_count<C>(&self, chat_id: C) -> Self::GetChatMembersCountwhere
C: Into<Recipient>,
fn get_chat_members_count<C>(&self, chat_id: C) -> Self::GetChatMembersCountwhere C: Into<Recipient>,
GetChatMembersCount
.type GetChatMemberCount = <B as Requester>::GetChatMemberCount
source§fn get_chat_member_count<C>(&self, chat_id: C) -> Self::GetChatMemberCountwhere
C: Into<Recipient>,
fn get_chat_member_count<C>(&self, chat_id: C) -> Self::GetChatMemberCountwhere C: Into<Recipient>,
GetChatMemberCount
.type GetChatMember = <B as Requester>::GetChatMember
source§fn get_chat_member<C>(&self, chat_id: C, user_id: UserId) -> Self::GetChatMemberwhere
C: Into<Recipient>,
fn get_chat_member<C>(&self, chat_id: C, user_id: UserId) -> Self::GetChatMemberwhere C: Into<Recipient>,
GetChatMember
.type SetChatStickerSet = <B as Requester>::SetChatStickerSet
source§fn set_chat_sticker_set<C, S>(
&self,
chat_id: C,
sticker_set_name: S
) -> Self::SetChatStickerSetwhere
C: Into<Recipient>,
S: Into<String>,
fn set_chat_sticker_set<C, S>( &self, chat_id: C, sticker_set_name: S ) -> Self::SetChatStickerSetwhere C: Into<Recipient>, S: Into<String>,
SetChatStickerSet
.type DeleteChatStickerSet = <B as Requester>::DeleteChatStickerSet
source§fn delete_chat_sticker_set<C>(&self, chat_id: C) -> Self::DeleteChatStickerSetwhere
C: Into<Recipient>,
fn delete_chat_sticker_set<C>(&self, chat_id: C) -> Self::DeleteChatStickerSetwhere C: Into<Recipient>,
DeleteChatStickerSet
.type GetForumTopicIconStickers = <B as Requester>::GetForumTopicIconStickers
source§fn get_forum_topic_icon_stickers(&self) -> Self::GetForumTopicIconStickers
fn get_forum_topic_icon_stickers(&self) -> Self::GetForumTopicIconStickers
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::CreateForumTopicwhere
C: Into<Recipient>,
N: Into<String>,
I: Into<String>,
fn create_forum_topic<C, N, I>( &self, chat_id: C, name: N, icon_color: u32, icon_custom_emoji_id: I ) -> Self::CreateForumTopicwhere C: Into<Recipient>, N: Into<String>, I: Into<String>,
CreateForumTopic
.type EditForumTopic = <B as Requester>::EditForumTopic
source§fn edit_forum_topic<C>(
&self,
chat_id: C,
message_thread_id: i32
) -> Self::EditForumTopicwhere
C: Into<Recipient>,
fn edit_forum_topic<C>( &self, chat_id: C, message_thread_id: i32 ) -> Self::EditForumTopicwhere C: Into<Recipient>,
EditForumTopic
.type CloseForumTopic = <B as Requester>::CloseForumTopic
source§fn close_forum_topic<C>(
&self,
chat_id: C,
message_thread_id: i32
) -> Self::CloseForumTopicwhere
C: Into<Recipient>,
fn close_forum_topic<C>( &self, chat_id: C, message_thread_id: i32 ) -> Self::CloseForumTopicwhere C: Into<Recipient>,
CloseForumTopic
.type ReopenForumTopic = <B as Requester>::ReopenForumTopic
source§fn reopen_forum_topic<C>(
&self,
chat_id: C,
message_thread_id: i32
) -> Self::ReopenForumTopicwhere
C: Into<Recipient>,
fn reopen_forum_topic<C>( &self, chat_id: C, message_thread_id: i32 ) -> Self::ReopenForumTopicwhere C: Into<Recipient>,
ReopenForumTopic
.type DeleteForumTopic = <B as Requester>::DeleteForumTopic
source§fn delete_forum_topic<C>(
&self,
chat_id: C,
message_thread_id: i32
) -> Self::DeleteForumTopicwhere
C: Into<Recipient>,
fn delete_forum_topic<C>( &self, chat_id: C, message_thread_id: i32 ) -> Self::DeleteForumTopicwhere C: Into<Recipient>,
DeleteForumTopic
.type UnpinAllForumTopicMessages = <B as Requester>::UnpinAllForumTopicMessages
source§fn unpin_all_forum_topic_messages<C>(
&self,
chat_id: C,
message_thread_id: i32
) -> Self::UnpinAllForumTopicMessageswhere
C: Into<Recipient>,
fn unpin_all_forum_topic_messages<C>( &self, chat_id: C, message_thread_id: i32 ) -> Self::UnpinAllForumTopicMessageswhere C: Into<Recipient>,
UnpinAllForumTopicMessages
.type EditGeneralForumTopic = <B as Requester>::EditGeneralForumTopic
source§fn edit_general_forum_topic<C, N>(
&self,
chat_id: C,
name: N
) -> Self::EditGeneralForumTopicwhere
C: Into<Recipient>,
N: Into<String>,
fn edit_general_forum_topic<C, N>( &self, chat_id: C, name: N ) -> Self::EditGeneralForumTopicwhere C: Into<Recipient>, N: Into<String>,
EditGeneralForumTopic
.type CloseGeneralForumTopic = <B as Requester>::CloseGeneralForumTopic
source§fn close_general_forum_topic<C>(
&self,
chat_id: C
) -> Self::CloseGeneralForumTopicwhere
C: Into<Recipient>,
fn close_general_forum_topic<C>( &self, chat_id: C ) -> Self::CloseGeneralForumTopicwhere C: Into<Recipient>,
CloseGeneralForumTopic
.type ReopenGeneralForumTopic = <B as Requester>::ReopenGeneralForumTopic
source§fn reopen_general_forum_topic<C>(
&self,
chat_id: C
) -> Self::ReopenGeneralForumTopicwhere
C: Into<Recipient>,
fn reopen_general_forum_topic<C>( &self, chat_id: C ) -> Self::ReopenGeneralForumTopicwhere C: Into<Recipient>,
ReopenGeneralForumTopic
.type HideGeneralForumTopic = <B as Requester>::HideGeneralForumTopic
source§fn hide_general_forum_topic<C>(&self, chat_id: C) -> Self::HideGeneralForumTopicwhere
C: Into<Recipient>,
fn hide_general_forum_topic<C>(&self, chat_id: C) -> Self::HideGeneralForumTopicwhere C: Into<Recipient>,
HideGeneralForumTopic
.type UnhideGeneralForumTopic = <B as Requester>::UnhideGeneralForumTopic
source§fn unhide_general_forum_topic<C>(
&self,
chat_id: C
) -> Self::UnhideGeneralForumTopicwhere
C: Into<Recipient>,
fn unhide_general_forum_topic<C>( &self, chat_id: C ) -> Self::UnhideGeneralForumTopicwhere C: Into<Recipient>,
UnhideGeneralForumTopic
.type AnswerCallbackQuery = <B as Requester>::AnswerCallbackQuery
source§fn answer_callback_query<C>(
&self,
callback_query_id: C
) -> Self::AnswerCallbackQuerywhere
C: Into<String>,
fn answer_callback_query<C>( &self, callback_query_id: C ) -> Self::AnswerCallbackQuerywhere C: Into<String>,
AnswerCallbackQuery
.type SetMyCommands = <B as Requester>::SetMyCommands
source§fn set_my_commands<C>(&self, commands: C) -> Self::SetMyCommandswhere
C: IntoIterator<Item = BotCommand>,
fn set_my_commands<C>(&self, commands: C) -> Self::SetMyCommandswhere C: IntoIterator<Item = BotCommand>,
SetMyCommands
.type GetMyCommands = <B as Requester>::GetMyCommands
source§fn get_my_commands(&self) -> Self::GetMyCommands
fn get_my_commands(&self) -> Self::GetMyCommands
GetMyCommands
.type SetChatMenuButton = <B as Requester>::SetChatMenuButton
SetChatMenuButton
.type GetChatMenuButton = <B as Requester>::GetChatMenuButton
GetChatMenuButton
.type SetMyDefaultAdministratorRights = <B as Requester>::SetMyDefaultAdministratorRights
source§fn set_my_default_administrator_rights(
&self
) -> Self::SetMyDefaultAdministratorRights
fn set_my_default_administrator_rights( &self ) -> Self::SetMyDefaultAdministratorRights
SetMyDefaultAdministratorRights
.type GetMyDefaultAdministratorRights = <B as Requester>::GetMyDefaultAdministratorRights
source§fn get_my_default_administrator_rights(
&self
) -> Self::GetMyDefaultAdministratorRights
fn get_my_default_administrator_rights( &self ) -> Self::GetMyDefaultAdministratorRights
GetMyDefaultAdministratorRights
.type DeleteMyCommands = <B as Requester>::DeleteMyCommands
source§fn delete_my_commands(&self) -> Self::DeleteMyCommands
fn delete_my_commands(&self) -> Self::DeleteMyCommands
DeleteMyCommands
.type AnswerInlineQuery = <B as Requester>::AnswerInlineQuery
source§fn answer_inline_query<I, R>(
&self,
inline_query_id: I,
results: R
) -> Self::AnswerInlineQuerywhere
I: Into<String>,
R: IntoIterator<Item = InlineQueryResult>,
fn answer_inline_query<I, R>( &self, inline_query_id: I, results: R ) -> Self::AnswerInlineQuerywhere I: Into<String>, R: IntoIterator<Item = InlineQueryResult>,
AnswerInlineQuery
.type AnswerWebAppQuery = <B as Requester>::AnswerWebAppQuery
source§fn answer_web_app_query<W>(
&self,
web_app_query_id: W,
result: InlineQueryResult
) -> Self::AnswerWebAppQuerywhere
W: Into<String>,
fn answer_web_app_query<W>( &self, web_app_query_id: W, result: InlineQueryResult ) -> Self::AnswerWebAppQuerywhere W: Into<String>,
AnswerWebAppQuery
.type EditMessageText = <B as Requester>::EditMessageText
source§fn edit_message_text<C, T>(
&self,
chat_id: C,
message_id: MessageId,
text: T
) -> Self::EditMessageTextwhere
C: Into<Recipient>,
T: Into<String>,
fn edit_message_text<C, T>( &self, chat_id: C, message_id: MessageId, text: T ) -> Self::EditMessageTextwhere C: Into<Recipient>, T: Into<String>,
EditMessageText
.type EditMessageTextInline = <B as Requester>::EditMessageTextInline
source§fn edit_message_text_inline<I, T>(
&self,
inline_message_id: I,
text: T
) -> Self::EditMessageTextInlinewhere
I: Into<String>,
T: Into<String>,
fn edit_message_text_inline<I, T>( &self, inline_message_id: I, text: T ) -> Self::EditMessageTextInlinewhere I: Into<String>, T: Into<String>,
EditMessageTextInline
.type EditMessageCaption = <B as Requester>::EditMessageCaption
EditMessageCaption
.type EditMessageCaptionInline = <B as Requester>::EditMessageCaptionInline
EditMessageCaptionInline
.type EditMessageMedia = <B as Requester>::EditMessageMedia
source§fn edit_message_media<C>(
&self,
chat_id: C,
message_id: MessageId,
media: InputMedia
) -> Self::EditMessageMediawhere
C: Into<Recipient>,
fn edit_message_media<C>( &self, chat_id: C, message_id: MessageId, media: InputMedia ) -> Self::EditMessageMediawhere C: Into<Recipient>,
EditMessageMedia
.type EditMessageMediaInline = <B as Requester>::EditMessageMediaInline
source§fn edit_message_media_inline<I>(
&self,
inline_message_id: I,
media: InputMedia
) -> Self::EditMessageMediaInlinewhere
I: Into<String>,
fn edit_message_media_inline<I>( &self, inline_message_id: I, media: InputMedia ) -> Self::EditMessageMediaInlinewhere I: Into<String>,
EditMessageMediaInline
.type EditMessageReplyMarkup = <B as Requester>::EditMessageReplyMarkup
source§fn edit_message_reply_markup<C>(
&self,
chat_id: C,
message_id: MessageId
) -> Self::EditMessageReplyMarkupwhere
C: Into<Recipient>,
fn edit_message_reply_markup<C>( &self, chat_id: C, message_id: MessageId ) -> Self::EditMessageReplyMarkupwhere C: Into<Recipient>,
EditMessageReplyMarkup
.type EditMessageReplyMarkupInline = <B as Requester>::EditMessageReplyMarkupInline
source§fn edit_message_reply_markup_inline<I>(
&self,
inline_message_id: I
) -> Self::EditMessageReplyMarkupInlinewhere
I: Into<String>,
fn edit_message_reply_markup_inline<I>( &self, inline_message_id: I ) -> Self::EditMessageReplyMarkupInlinewhere I: Into<String>,
EditMessageReplyMarkupInline
.type StopPoll = <B as Requester>::StopPoll
source§fn stop_poll<C>(&self, chat_id: C, message_id: MessageId) -> Self::StopPollwhere
C: Into<Recipient>,
fn stop_poll<C>(&self, chat_id: C, message_id: MessageId) -> Self::StopPollwhere C: Into<Recipient>,
StopPoll
.type DeleteMessage = <B as Requester>::DeleteMessage
source§fn delete_message<C>(
&self,
chat_id: C,
message_id: MessageId
) -> Self::DeleteMessagewhere
C: Into<Recipient>,
fn delete_message<C>( &self, chat_id: C, message_id: MessageId ) -> Self::DeleteMessagewhere C: Into<Recipient>,
DeleteMessage
.type GetStickerSet = <B as Requester>::GetStickerSet
source§fn get_sticker_set<N>(&self, name: N) -> Self::GetStickerSetwhere
N: Into<String>,
fn get_sticker_set<N>(&self, name: N) -> Self::GetStickerSetwhere N: Into<String>,
GetStickerSet
.type GetCustomEmojiStickers = <B as Requester>::GetCustomEmojiStickers
source§fn get_custom_emoji_stickers<C>(
&self,
custom_emoji_ids: C
) -> Self::GetCustomEmojiStickerswhere
C: IntoIterator<Item = String>,
fn get_custom_emoji_stickers<C>( &self, custom_emoji_ids: C ) -> Self::GetCustomEmojiStickerswhere C: IntoIterator<Item = String>,
GetCustomEmojiStickers
.type UploadStickerFile = <B as Requester>::UploadStickerFile
source§fn upload_sticker_file(
&self,
user_id: UserId,
png_sticker: InputFile
) -> Self::UploadStickerFile
fn upload_sticker_file( &self, user_id: UserId, png_sticker: InputFile ) -> Self::UploadStickerFile
UploadStickerFile
.type CreateNewStickerSet = <B as Requester>::CreateNewStickerSet
source§fn create_new_sticker_set<N, T, E>(
&self,
user_id: UserId,
name: N,
title: T,
sticker: InputSticker,
emojis: E
) -> Self::CreateNewStickerSetwhere
N: Into<String>,
T: Into<String>,
E: Into<String>,
fn create_new_sticker_set<N, T, E>( &self, user_id: UserId, name: N, title: T, sticker: InputSticker, emojis: E ) -> Self::CreateNewStickerSetwhere N: Into<String>, T: Into<String>, E: Into<String>,
CreateNewStickerSet
.type AddStickerToSet = <B as Requester>::AddStickerToSet
source§fn add_sticker_to_set<N, E>(
&self,
user_id: UserId,
name: N,
sticker: InputSticker,
emojis: E
) -> Self::AddStickerToSetwhere
N: Into<String>,
E: Into<String>,
fn add_sticker_to_set<N, E>( &self, user_id: UserId, name: N, sticker: InputSticker, emojis: E ) -> Self::AddStickerToSetwhere N: Into<String>, E: Into<String>,
AddStickerToSet
.type SetStickerPositionInSet = <B as Requester>::SetStickerPositionInSet
source§fn set_sticker_position_in_set<S>(
&self,
sticker: S,
position: u32
) -> Self::SetStickerPositionInSetwhere
S: Into<String>,
fn set_sticker_position_in_set<S>( &self, sticker: S, position: u32 ) -> Self::SetStickerPositionInSetwhere S: Into<String>,
SetStickerPositionInSet
.type DeleteStickerFromSet = <B as Requester>::DeleteStickerFromSet
source§fn delete_sticker_from_set<S>(&self, sticker: S) -> Self::DeleteStickerFromSetwhere
S: Into<String>,
fn delete_sticker_from_set<S>(&self, sticker: S) -> Self::DeleteStickerFromSetwhere S: Into<String>,
DeleteStickerFromSet
.type SetStickerSetThumb = <B as Requester>::SetStickerSetThumb
source§fn set_sticker_set_thumb<N>(
&self,
name: N,
user_id: UserId
) -> Self::SetStickerSetThumbwhere
N: Into<String>,
fn set_sticker_set_thumb<N>( &self, name: N, user_id: UserId ) -> Self::SetStickerSetThumbwhere N: Into<String>,
SetStickerSetThumb
.type AnswerShippingQuery = <B as Requester>::AnswerShippingQuery
source§fn answer_shipping_query<S>(
&self,
shipping_query_id: S,
ok: bool
) -> Self::AnswerShippingQuerywhere
S: Into<String>,
fn answer_shipping_query<S>( &self, shipping_query_id: S, ok: bool ) -> Self::AnswerShippingQuerywhere S: Into<String>,
AnswerShippingQuery
.type CreateInvoiceLink = <B as Requester>::CreateInvoiceLink
source§fn create_invoice_link<T, D, Pa, P, C, Pri>(
&self,
title: T,
description: D,
payload: Pa,
provider_token: P,
currency: C,
prices: Pri
) -> Self::CreateInvoiceLinkwhere
T: Into<String>,
D: Into<String>,
Pa: Into<String>,
P: Into<String>,
C: Into<String>,
Pri: IntoIterator<Item = LabeledPrice>,
fn create_invoice_link<T, D, Pa, P, C, Pri>( &self, title: T, description: D, payload: Pa, provider_token: P, currency: C, prices: Pri ) -> Self::CreateInvoiceLinkwhere T: Into<String>, D: Into<String>, Pa: Into<String>, P: Into<String>, C: Into<String>, Pri: IntoIterator<Item = LabeledPrice>,
CreateInvoiceLink
.type AnswerPreCheckoutQuery = <B as Requester>::AnswerPreCheckoutQuery
source§fn answer_pre_checkout_query<P>(
&self,
pre_checkout_query_id: P,
ok: bool
) -> Self::AnswerPreCheckoutQuerywhere
P: Into<String>,
fn answer_pre_checkout_query<P>( &self, pre_checkout_query_id: P, ok: bool ) -> Self::AnswerPreCheckoutQuerywhere P: Into<String>,
AnswerPreCheckoutQuery
.type SetPassportDataErrors = <B as Requester>::SetPassportDataErrors
source§fn set_passport_data_errors<E>(
&self,
user_id: UserId,
errors: E
) -> Self::SetPassportDataErrorswhere
E: IntoIterator<Item = PassportElementError>,
fn set_passport_data_errors<E>( &self, user_id: UserId, errors: E ) -> Self::SetPassportDataErrorswhere E: IntoIterator<Item = PassportElementError>,
SetPassportDataErrors
.type SendGame = <B as Requester>::SendGame
source§fn send_game<G>(&self, chat_id: u32, game_short_name: G) -> Self::SendGamewhere
G: Into<String>,
fn send_game<G>(&self, chat_id: u32, game_short_name: G) -> Self::SendGamewhere G: Into<String>,
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
fn set_game_score( &self, user_id: UserId, score: u64, chat_id: u32, message_id: MessageId ) -> Self::SetGameScore
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::SetGameScoreInlinewhere
I: Into<String>,
fn set_game_score_inline<I>( &self, user_id: UserId, score: u64, inline_message_id: I ) -> Self::SetGameScoreInlinewhere I: Into<String>,
SetGameScoreInline
.type ApproveChatJoinRequest = <B as Requester>::ApproveChatJoinRequest
source§fn approve_chat_join_request<C>(
&self,
chat_id: C,
user_id: UserId
) -> Self::ApproveChatJoinRequestwhere
C: Into<Recipient>,
fn approve_chat_join_request<C>( &self, chat_id: C, user_id: UserId ) -> Self::ApproveChatJoinRequestwhere C: Into<Recipient>,
ApproveChatJoinRequest
.type DeclineChatJoinRequest = <B as Requester>::DeclineChatJoinRequest
source§fn decline_chat_join_request<C>(
&self,
chat_id: C,
user_id: UserId
) -> Self::DeclineChatJoinRequestwhere
C: Into<Recipient>,
fn decline_chat_join_request<C>( &self, chat_id: C, user_id: UserId ) -> Self::DeclineChatJoinRequestwhere C: Into<Recipient>,
DeclineChatJoinRequest
.type GetGameHighScores = <B as Requester>::GetGameHighScores
source§fn get_game_high_scores<T>(
&self,
user_id: UserId,
target: T
) -> Self::GetGameHighScoreswhere
T: Into<TargetMessage>,
fn get_game_high_scores<T>( &self, user_id: UserId, target: T ) -> Self::GetGameHighScoreswhere T: Into<TargetMessage>,
GetGameHighScores
.