teloxide_core/adaptors/
erased.rs

1use std::{future::IntoFuture, sync::Arc};
2
3use futures::{future::BoxFuture, FutureExt};
4use reqwest::Url;
5
6use crate::{
7    errors::AsResponseParameters,
8    payloads::*,
9    requests::{HasPayload, Output, Payload, Request, Requester},
10    types::*,
11};
12
13/// [`Requester`] with erased type.
14pub struct ErasedRequester<'a, E> {
15    inner: Arc<dyn ErasableRequester<'a, Err = E> + 'a>,
16}
17
18impl<'a, E> ErasedRequester<'a, E> {
19    /// Erases type of `requester`
20    ///
21    /// Note: it's recommended to use [`RequesterExt::erase`] instead.
22    ///
23    /// [`RequesterExt::erase`]: crate::requests::RequesterExt::erase
24    pub fn new<B>(requester: B) -> Self
25    where
26        B: Requester<Err = E> + 'a,
27    {
28        Self { inner: Arc::new(requester) }
29    }
30}
31
32impl<E> std::fmt::Debug for ErasedRequester<'_, E> {
33    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
34        f.debug_struct("ErasedRequester").finish_non_exhaustive()
35    }
36}
37
38// NB. hand-written impl to avoid `E: Clone` bound
39impl<E> Clone for ErasedRequester<'_, E> {
40    fn clone(&self) -> Self {
41        Self { inner: Arc::clone(&self.inner) }
42    }
43}
44
45/// [`Request`] with erased type.
46#[must_use = "Requests are lazy and do nothing unless sent"]
47pub struct ErasedRequest<'a, T, E> {
48    inner: Box<dyn ErasableRequest<'a, Payload = T, Err = E> + 'a>,
49}
50
51// `T: Payload` required b/c of <https://github.com/rust-lang/rust/issues/102185>
52impl<'a, T: Payload, E> ErasedRequest<'a, T, E> {
53    pub(crate) fn erase(request: impl Request<Payload = T, Err = E> + 'a) -> Self {
54        Self { inner: Box::new(request) }
55    }
56}
57
58impl<T, E> HasPayload for ErasedRequest<'_, T, E>
59where
60    T: Payload,
61{
62    type Payload = T;
63
64    fn payload_mut(&mut self) -> &mut Self::Payload {
65        self.inner.payload_mut()
66    }
67
68    fn payload_ref(&self) -> &Self::Payload {
69        self.inner.payload_ref()
70    }
71}
72
73impl<'a, T, E> Request for ErasedRequest<'a, T, E>
74where
75    T: Payload,
76    E: std::error::Error + Send,
77{
78    type Err = E;
79
80    type Send = BoxFuture<'a, Result<Output<Self>, Self::Err>>;
81
82    type SendRef = BoxFuture<'a, Result<Output<Self>, Self::Err>>;
83
84    fn send(self) -> Self::Send {
85        self.inner.send_box()
86    }
87
88    fn send_ref(&self) -> Self::SendRef {
89        self.inner.send_ref()
90    }
91}
92
93impl<T, E> IntoFuture for ErasedRequest<'_, T, E>
94where
95    T: Payload,
96    E: std::error::Error + Send,
97{
98    type Output = Result<Output<Self>, <Self as Request>::Err>;
99    type IntoFuture = <Self as Request>::Send;
100
101    fn into_future(self) -> Self::IntoFuture {
102        self.send()
103    }
104}
105
106/// Object safe version of [`Request`].
107///
108/// TODO(waffle): make [`Request`] object safe and remove this trait (this is a
109/// breaking change)
110trait ErasableRequest<'a>: HasPayload {
111    type Err: std::error::Error + Send;
112
113    fn send_box(self: Box<Self>) -> BoxFuture<'a, Result<Output<Self>, Self::Err>>;
114
115    fn send_ref(&self) -> BoxFuture<'a, Result<Output<Self>, Self::Err>>;
116}
117
118impl<'a, R> ErasableRequest<'a> for R
119where
120    R: Request,
121    <R as Request>::Send: 'a,
122    <R as Request>::SendRef: 'a,
123{
124    type Err = R::Err;
125
126    fn send_box(self: Box<Self>) -> BoxFuture<'a, Result<Output<Self>, Self::Err>> {
127        self.send().boxed()
128    }
129
130    fn send_ref(&self) -> BoxFuture<'a, Result<Output<Self>, Self::Err>> {
131        Request::send_ref(self).boxed()
132    }
133}
134
135macro_rules! fty {
136    ($T:ident) => {
137        ErasedRequest<'a, $T, Err>
138    };
139}
140
141macro_rules! fwd_erased {
142    ($m:ident $this:ident ($($arg:ident : $T:ty),*)) => {
143        $this.inner.$m($( fwd_erased!(@convert $m, $arg, $arg : $T) ),*)
144    };
145
146    (@convert send_paid_media, $arg:ident, media : $T:ty) => {
147        $arg.into_iter().collect()
148    };
149    (@convert send_media_group, $arg:ident, media : $T:ty) => {
150        $arg.into_iter().collect()
151    };
152    (@convert $m:ident, $arg:ident, options : $T:ty) => {
153        $arg.into_iter().collect()
154    };
155    (@convert $m:ident, $arg:ident, commands : $T:ty) => {
156        $arg.into_iter().collect()
157    };
158    (@convert $m:ident, $arg:ident, results : $T:ty) => {
159        $arg.into_iter().collect()
160    };
161    (@convert $m:ident, $arg:ident, prices : $T:ty) => {
162        $arg.into_iter().collect()
163    };
164    (@convert $m:ident, $arg:ident, errors : $T:ty) => {
165        $arg.into_iter().collect()
166    };
167    (@convert $m:ident, $arg:ident, custom_emoji_ids : $T:ty) => {
168        $arg.into_iter().collect()
169    };
170    (@convert $m:ident, $arg:ident, stickers: $T:ty) => {
171        $arg.into_iter().collect()
172    };
173    (@convert $m:ident, $arg:ident, emoji_list: $T:ty) => {
174        $arg.into_iter().collect()
175    };
176    (@convert $m:ident, $arg:ident, message_ids: $T:ty) => {
177        $arg.into_iter().collect()
178    };
179    (@convert $m:ident, $arg:ident, $arg_:ident : $T:ty) => {
180        $arg.into()
181    };
182}
183
184impl<'a, Err> Requester for ErasedRequester<'a, Err>
185where
186    Err: std::error::Error + Send + AsResponseParameters,
187{
188    type Err = Err;
189
190    requester_forward! {
191        get_me,
192        log_out,
193        close,
194        get_updates,
195        set_webhook,
196        delete_webhook,
197        get_webhook_info,
198        forward_message,
199        forward_messages,
200        copy_message,
201        copy_messages,
202        send_message,
203        send_photo,
204        send_audio,
205        send_document,
206        send_video,
207        send_animation,
208        send_voice,
209        send_video_note,
210        send_paid_media,
211        send_media_group,
212        send_location,
213        edit_message_live_location,
214        edit_message_live_location_inline,
215        stop_message_live_location,
216        stop_message_live_location_inline,
217        edit_message_checklist,
218        send_venue,
219        send_contact,
220        send_poll,
221        send_checklist,
222        send_dice,
223        send_chat_action,
224        set_message_reaction,
225        get_user_profile_photos,
226        set_user_emoji_status,
227        get_file,
228        kick_chat_member,
229        ban_chat_member,
230        unban_chat_member,
231        restrict_chat_member,
232        promote_chat_member,
233        set_chat_administrator_custom_title,
234        ban_chat_sender_chat,
235        unban_chat_sender_chat,
236        set_chat_permissions,
237        export_chat_invite_link,
238        create_chat_invite_link,
239        edit_chat_invite_link,
240        create_chat_subscription_invite_link,
241        edit_chat_subscription_invite_link,
242        revoke_chat_invite_link,
243        set_chat_photo,
244        delete_chat_photo,
245        set_chat_title,
246        set_chat_description,
247        pin_chat_message,
248        unpin_chat_message,
249        unpin_all_chat_messages,
250        leave_chat,
251        get_chat,
252        get_chat_administrators,
253        get_chat_members_count,
254        get_chat_member_count,
255        get_chat_member,
256        set_chat_sticker_set,
257        delete_chat_sticker_set,
258        get_forum_topic_icon_stickers,
259        create_forum_topic,
260        edit_forum_topic,
261        close_forum_topic,
262        reopen_forum_topic,
263        delete_forum_topic,
264        unpin_all_forum_topic_messages,
265        edit_general_forum_topic,
266        close_general_forum_topic,
267        reopen_general_forum_topic,
268        hide_general_forum_topic,
269        unhide_general_forum_topic,
270        unpin_all_general_forum_topic_messages,
271        answer_callback_query,
272        get_user_chat_boosts,
273        set_my_commands,
274        get_business_connection,
275        get_my_commands,
276        set_my_name,
277        get_my_name,
278        set_my_description,
279        get_my_description,
280        set_my_short_description,
281        get_my_short_description,
282        set_chat_menu_button,
283        get_chat_menu_button,
284        set_my_default_administrator_rights,
285        get_my_default_administrator_rights,
286        delete_my_commands,
287        answer_inline_query,
288        answer_web_app_query,
289        save_prepared_inline_message,
290        edit_message_text,
291        edit_message_text_inline,
292        edit_message_caption,
293        edit_message_caption_inline,
294        edit_message_media,
295        edit_message_media_inline,
296        edit_message_reply_markup,
297        edit_message_reply_markup_inline,
298        stop_poll,
299        delete_message,
300        delete_messages,
301        send_sticker,
302        get_sticker_set,
303        get_custom_emoji_stickers,
304        upload_sticker_file,
305        create_new_sticker_set,
306        add_sticker_to_set,
307        set_sticker_position_in_set,
308        delete_sticker_from_set,
309        replace_sticker_in_set,
310        set_sticker_set_thumbnail,
311        set_custom_emoji_sticker_set_thumbnail,
312        set_sticker_set_title,
313        delete_sticker_set,
314        set_sticker_emoji_list,
315        set_sticker_keywords,
316        set_sticker_mask_position,
317        get_available_gifts,
318        send_gift,
319        send_gift_chat,
320        gift_premium_subscription,
321        verify_user,
322        verify_chat,
323        remove_user_verification,
324        remove_chat_verification,
325        read_business_message,
326        delete_business_messages,
327        set_business_account_name,
328        set_business_account_username,
329        set_business_account_bio,
330        set_business_account_profile_photo,
331        remove_business_account_profile_photo,
332        set_business_account_gift_settings,
333        get_business_account_star_balance,
334        transfer_business_account_stars,
335        get_business_account_gifts,
336        convert_gift_to_stars,
337        upgrade_gift,
338        transfer_gift,
339        post_story,
340        edit_story,
341        delete_story,
342        send_invoice,
343        create_invoice_link,
344        answer_shipping_query,
345        answer_pre_checkout_query,
346        get_my_star_balance,
347        get_star_transactions,
348        refund_star_payment,
349        edit_user_star_subscription,
350        set_passport_data_errors,
351        send_game,
352        set_game_score,
353        set_game_score_inline,
354        get_game_high_scores,
355        approve_chat_join_request,
356        decline_chat_join_request
357        => fwd_erased, fty
358    }
359}
360
361/// Object safe version of [`Requester`].
362trait ErasableRequester<'a> {
363    /// Error type returned by all requests.
364    type Err: std::error::Error + Send;
365
366    fn get_updates(&self) -> ErasedRequest<'a, GetUpdates, Self::Err>;
367
368    fn set_webhook(&self, url: Url) -> ErasedRequest<'a, SetWebhook, Self::Err>;
369
370    fn delete_webhook(&self) -> ErasedRequest<'a, DeleteWebhook, Self::Err>;
371
372    fn get_webhook_info(&self) -> ErasedRequest<'a, GetWebhookInfo, Self::Err>;
373
374    fn get_me(&self) -> ErasedRequest<'a, GetMe, Self::Err>;
375
376    fn log_out(&self) -> ErasedRequest<'a, LogOut, Self::Err>;
377
378    fn close(&self) -> ErasedRequest<'a, Close, Self::Err>;
379
380    fn send_message(
381        &self,
382        chat_id: Recipient,
383        text: String,
384    ) -> ErasedRequest<'a, SendMessage, Self::Err>;
385
386    fn forward_message(
387        &self,
388        chat_id: Recipient,
389        from_chat_id: Recipient,
390        message_id: MessageId,
391    ) -> ErasedRequest<'a, ForwardMessage, Self::Err>;
392
393    fn forward_messages(
394        &self,
395        chat_id: Recipient,
396        from_chat_id: Recipient,
397        message_ids: Vec<MessageId>,
398    ) -> ErasedRequest<'a, ForwardMessages, Self::Err>;
399
400    fn copy_message(
401        &self,
402        chat_id: Recipient,
403        from_chat_id: Recipient,
404        message_id: MessageId,
405    ) -> ErasedRequest<'a, CopyMessage, Self::Err>;
406
407    fn copy_messages(
408        &self,
409        chat_id: Recipient,
410        from_chat_id: Recipient,
411        message_ids: Vec<MessageId>,
412    ) -> ErasedRequest<'a, CopyMessages, Self::Err>;
413
414    fn send_photo(
415        &self,
416        chat_id: Recipient,
417        photo: InputFile,
418    ) -> ErasedRequest<'a, SendPhoto, Self::Err>;
419
420    fn send_audio(
421        &self,
422        chat_id: Recipient,
423        audio: InputFile,
424    ) -> ErasedRequest<'a, SendAudio, Self::Err>;
425
426    fn send_document(
427        &self,
428        chat_id: Recipient,
429        document: InputFile,
430    ) -> ErasedRequest<'a, SendDocument, Self::Err>;
431
432    fn send_video(
433        &self,
434        chat_id: Recipient,
435        video: InputFile,
436    ) -> ErasedRequest<'a, SendVideo, Self::Err>;
437
438    fn send_animation(
439        &self,
440        chat_id: Recipient,
441        animation: InputFile,
442    ) -> ErasedRequest<'a, SendAnimation, Self::Err>;
443
444    fn send_voice(
445        &self,
446        chat_id: Recipient,
447        voice: InputFile,
448    ) -> ErasedRequest<'a, SendVoice, Self::Err>;
449
450    fn send_video_note(
451        &self,
452        chat_id: Recipient,
453        video_note: InputFile,
454    ) -> ErasedRequest<'a, SendVideoNote, Self::Err>;
455
456    fn send_paid_media(
457        &self,
458        chat_id: Recipient,
459        star_count: u32,
460        media: Vec<InputPaidMedia>,
461    ) -> ErasedRequest<'a, SendPaidMedia, Self::Err>;
462
463    fn send_media_group(
464        &self,
465        chat_id: Recipient,
466        media: Vec<InputMedia>,
467    ) -> ErasedRequest<'a, SendMediaGroup, Self::Err>;
468
469    fn send_location(
470        &self,
471        chat_id: Recipient,
472        latitude: f64,
473        longitude: f64,
474    ) -> ErasedRequest<'a, SendLocation, Self::Err>;
475
476    fn edit_message_live_location(
477        &self,
478        chat_id: Recipient,
479        message_id: MessageId,
480        latitude: f64,
481        longitude: f64,
482    ) -> ErasedRequest<'a, EditMessageLiveLocation, Self::Err>;
483
484    fn edit_message_live_location_inline(
485        &self,
486        inline_message_id: String,
487        latitude: f64,
488        longitude: f64,
489    ) -> ErasedRequest<'a, EditMessageLiveLocationInline, Self::Err>;
490
491    fn stop_message_live_location(
492        &self,
493        chat_id: Recipient,
494        message_id: MessageId,
495    ) -> ErasedRequest<'a, StopMessageLiveLocation, Self::Err>;
496
497    fn stop_message_live_location_inline(
498        &self,
499        inline_message_id: String,
500    ) -> ErasedRequest<'a, StopMessageLiveLocationInline, Self::Err>;
501
502    fn edit_message_checklist(
503        &self,
504        business_connection_id: BusinessConnectionId,
505        chat_id: ChatId,
506        message_id: MessageId,
507        checklist: InputChecklist,
508    ) -> ErasedRequest<'a, EditMessageChecklist, Self::Err>;
509
510    fn send_venue(
511        &self,
512        chat_id: Recipient,
513        latitude: f64,
514        longitude: f64,
515        title: String,
516        address: String,
517    ) -> ErasedRequest<'a, SendVenue, Self::Err>;
518
519    fn send_contact(
520        &self,
521        chat_id: Recipient,
522        phone_number: String,
523        first_name: String,
524    ) -> ErasedRequest<'a, SendContact, Self::Err>;
525
526    fn send_poll(
527        &self,
528        chat_id: Recipient,
529        question: String,
530        options: Vec<InputPollOption>,
531    ) -> ErasedRequest<'a, SendPoll, Self::Err>;
532
533    fn send_checklist(
534        &self,
535        business_connection_id: BusinessConnectionId,
536        chat_id: ChatId,
537        checklist: InputChecklist,
538    ) -> ErasedRequest<'a, SendChecklist, Self::Err>;
539
540    fn send_dice(&self, chat_id: Recipient) -> ErasedRequest<'a, SendDice, Self::Err>;
541
542    fn send_chat_action(
543        &self,
544        chat_id: Recipient,
545        action: ChatAction,
546    ) -> ErasedRequest<'a, SendChatAction, Self::Err>;
547
548    fn set_message_reaction(
549        &self,
550        chat_id: Recipient,
551        message_id: MessageId,
552    ) -> ErasedRequest<'a, SetMessageReaction, Self::Err>;
553
554    fn get_user_profile_photos(
555        &self,
556        user_id: UserId,
557    ) -> ErasedRequest<'a, GetUserProfilePhotos, Self::Err>;
558
559    fn set_user_emoji_status(
560        &self,
561        user_id: UserId,
562    ) -> ErasedRequest<'a, SetUserEmojiStatus, Self::Err>;
563
564    fn get_file(&self, file_id: FileId) -> ErasedRequest<'a, GetFile, Self::Err>;
565
566    fn ban_chat_member(
567        &self,
568        chat_id: Recipient,
569        user_id: UserId,
570    ) -> ErasedRequest<'a, BanChatMember, Self::Err>;
571
572    fn kick_chat_member(
573        &self,
574        chat_id: Recipient,
575        user_id: UserId,
576    ) -> ErasedRequest<'a, KickChatMember, Self::Err>;
577
578    fn unban_chat_member(
579        &self,
580        chat_id: Recipient,
581        user_id: UserId,
582    ) -> ErasedRequest<'a, UnbanChatMember, Self::Err>;
583
584    fn restrict_chat_member(
585        &self,
586        chat_id: Recipient,
587        user_id: UserId,
588        permissions: ChatPermissions,
589    ) -> ErasedRequest<'a, RestrictChatMember, Self::Err>;
590
591    fn promote_chat_member(
592        &self,
593        chat_id: Recipient,
594        user_id: UserId,
595    ) -> ErasedRequest<'a, PromoteChatMember, Self::Err>;
596
597    fn set_chat_administrator_custom_title(
598        &self,
599        chat_id: Recipient,
600        user_id: UserId,
601        custom_title: String,
602    ) -> ErasedRequest<'a, SetChatAdministratorCustomTitle, Self::Err>;
603
604    fn ban_chat_sender_chat(
605        &self,
606        chat_id: Recipient,
607        sender_chat_id: ChatId,
608    ) -> ErasedRequest<'a, BanChatSenderChat, Self::Err>;
609
610    fn unban_chat_sender_chat(
611        &self,
612        chat_id: Recipient,
613        sender_chat_id: ChatId,
614    ) -> ErasedRequest<'a, UnbanChatSenderChat, Self::Err>;
615
616    fn set_chat_permissions(
617        &self,
618        chat_id: Recipient,
619        permissions: ChatPermissions,
620    ) -> ErasedRequest<'a, SetChatPermissions, Self::Err>;
621
622    fn export_chat_invite_link(
623        &self,
624        chat_id: Recipient,
625    ) -> ErasedRequest<'a, ExportChatInviteLink, Self::Err>;
626
627    fn create_chat_invite_link(
628        &self,
629        chat_id: Recipient,
630    ) -> ErasedRequest<'a, CreateChatInviteLink, Self::Err>;
631
632    fn edit_chat_invite_link(
633        &self,
634        chat_id: Recipient,
635        invite_link: String,
636    ) -> ErasedRequest<'a, EditChatInviteLink, Self::Err>;
637
638    fn create_chat_subscription_invite_link(
639        &self,
640        chat_id: Recipient,
641        subscription_period: Seconds,
642        subscription_price: u32,
643    ) -> ErasedRequest<'a, CreateChatSubscriptionInviteLink, Self::Err>;
644
645    fn edit_chat_subscription_invite_link(
646        &self,
647        chat_id: Recipient,
648        invite_link: String,
649    ) -> ErasedRequest<'a, EditChatSubscriptionInviteLink, Self::Err>;
650
651    fn revoke_chat_invite_link(
652        &self,
653        chat_id: Recipient,
654        invite_link: String,
655    ) -> ErasedRequest<'a, RevokeChatInviteLink, Self::Err>;
656
657    /// For Telegram documentation see [`ApproveChatJoinRequest`].
658    fn approve_chat_join_request(
659        &self,
660        chat_id: Recipient,
661        user_id: UserId,
662    ) -> ErasedRequest<'a, ApproveChatJoinRequest, Self::Err>;
663
664    /// For Telegram documentation see [`DeclineChatJoinRequest`].
665    fn decline_chat_join_request(
666        &self,
667        chat_id: Recipient,
668        user_id: UserId,
669    ) -> ErasedRequest<'a, DeclineChatJoinRequest, Self::Err>;
670
671    fn set_chat_photo(
672        &self,
673        chat_id: Recipient,
674        photo: InputFile,
675    ) -> ErasedRequest<'a, SetChatPhoto, Self::Err>;
676
677    fn delete_chat_photo(
678        &self,
679        chat_id: Recipient,
680    ) -> ErasedRequest<'a, DeleteChatPhoto, Self::Err>;
681
682    fn set_chat_title(
683        &self,
684        chat_id: Recipient,
685        title: String,
686    ) -> ErasedRequest<'a, SetChatTitle, Self::Err>;
687
688    fn set_chat_description(
689        &self,
690        chat_id: Recipient,
691    ) -> ErasedRequest<'a, SetChatDescription, Self::Err>;
692
693    fn pin_chat_message(
694        &self,
695        chat_id: Recipient,
696        message_id: MessageId,
697    ) -> ErasedRequest<'a, PinChatMessage, Self::Err>;
698
699    fn unpin_chat_message(
700        &self,
701        chat_id: Recipient,
702    ) -> ErasedRequest<'a, UnpinChatMessage, Self::Err>;
703
704    fn unpin_all_chat_messages(
705        &self,
706        chat_id: Recipient,
707    ) -> ErasedRequest<'a, UnpinAllChatMessages, Self::Err>;
708
709    fn leave_chat(&self, chat_id: Recipient) -> ErasedRequest<'a, LeaveChat, Self::Err>;
710
711    fn get_chat(&self, chat_id: Recipient) -> ErasedRequest<'a, GetChat, Self::Err>;
712
713    fn get_chat_administrators(
714        &self,
715        chat_id: Recipient,
716    ) -> ErasedRequest<'a, GetChatAdministrators, Self::Err>;
717
718    fn get_chat_member_count(
719        &self,
720        chat_id: Recipient,
721    ) -> ErasedRequest<'a, GetChatMemberCount, Self::Err>;
722
723    fn get_chat_members_count(
724        &self,
725        chat_id: Recipient,
726    ) -> ErasedRequest<'a, GetChatMembersCount, Self::Err>;
727
728    fn get_chat_member(
729        &self,
730        chat_id: Recipient,
731        user_id: UserId,
732    ) -> ErasedRequest<'a, GetChatMember, Self::Err>;
733
734    fn set_chat_sticker_set(
735        &self,
736        chat_id: Recipient,
737        sticker_set_name: String,
738    ) -> ErasedRequest<'a, SetChatStickerSet, Self::Err>;
739
740    fn delete_chat_sticker_set(
741        &self,
742        chat_id: Recipient,
743    ) -> ErasedRequest<'a, DeleteChatStickerSet, Self::Err>;
744
745    fn get_forum_topic_icon_stickers(
746        &self,
747    ) -> ErasedRequest<'a, GetForumTopicIconStickers, Self::Err>;
748
749    fn create_forum_topic(
750        &self,
751        chat_id: Recipient,
752        name: String,
753    ) -> ErasedRequest<'a, CreateForumTopic, Self::Err>;
754
755    fn edit_forum_topic(
756        &self,
757        chat_id: Recipient,
758        message_thread_id: ThreadId,
759    ) -> ErasedRequest<'a, EditForumTopic, Self::Err>;
760
761    fn close_forum_topic(
762        &self,
763        chat_id: Recipient,
764        message_thread_id: ThreadId,
765    ) -> ErasedRequest<'a, CloseForumTopic, Self::Err>;
766
767    fn reopen_forum_topic(
768        &self,
769        chat_id: Recipient,
770        message_thread_id: ThreadId,
771    ) -> ErasedRequest<'a, ReopenForumTopic, Self::Err>;
772
773    fn delete_forum_topic(
774        &self,
775        chat_id: Recipient,
776        message_thread_id: ThreadId,
777    ) -> ErasedRequest<'a, DeleteForumTopic, Self::Err>;
778
779    fn unpin_all_forum_topic_messages(
780        &self,
781        chat_id: Recipient,
782        message_thread_id: ThreadId,
783    ) -> ErasedRequest<'a, UnpinAllForumTopicMessages, Self::Err>;
784
785    fn edit_general_forum_topic(
786        &self,
787        chat_id: Recipient,
788        name: String,
789    ) -> ErasedRequest<'a, EditGeneralForumTopic, Self::Err>;
790
791    fn close_general_forum_topic(
792        &self,
793        chat_id: Recipient,
794    ) -> ErasedRequest<'a, CloseGeneralForumTopic, Self::Err>;
795
796    fn reopen_general_forum_topic(
797        &self,
798        chat_id: Recipient,
799    ) -> ErasedRequest<'a, ReopenGeneralForumTopic, Self::Err>;
800
801    fn hide_general_forum_topic(
802        &self,
803        chat_id: Recipient,
804    ) -> ErasedRequest<'a, HideGeneralForumTopic, Self::Err>;
805
806    fn unhide_general_forum_topic(
807        &self,
808        chat_id: Recipient,
809    ) -> ErasedRequest<'a, UnhideGeneralForumTopic, Self::Err>;
810
811    fn unpin_all_general_forum_topic_messages(
812        &self,
813        chat_id: Recipient,
814    ) -> ErasedRequest<'a, UnpinAllGeneralForumTopicMessages, Self::Err>;
815
816    fn answer_callback_query(
817        &self,
818        callback_query_id: CallbackQueryId,
819    ) -> ErasedRequest<'a, AnswerCallbackQuery, Self::Err>;
820
821    fn get_user_chat_boosts(
822        &self,
823        chat_id: Recipient,
824        user_id: UserId,
825    ) -> ErasedRequest<'a, GetUserChatBoosts, Self::Err>;
826
827    fn set_my_commands(
828        &self,
829        commands: Vec<BotCommand>,
830    ) -> ErasedRequest<'a, SetMyCommands, Self::Err>;
831
832    fn get_business_connection(
833        &self,
834        business_connection_id: BusinessConnectionId,
835    ) -> ErasedRequest<'a, GetBusinessConnection, Self::Err>;
836
837    fn get_my_commands(&self) -> ErasedRequest<'a, GetMyCommands, Self::Err>;
838
839    fn set_my_name(&self) -> ErasedRequest<'a, SetMyName, Self::Err>;
840
841    fn get_my_name(&self) -> ErasedRequest<'a, GetMyName, Self::Err>;
842
843    fn set_my_description(&self) -> ErasedRequest<'a, SetMyDescription, Self::Err>;
844
845    fn get_my_description(&self) -> ErasedRequest<'a, GetMyDescription, Self::Err>;
846
847    fn set_my_short_description(&self) -> ErasedRequest<'a, SetMyShortDescription, Self::Err>;
848
849    fn get_my_short_description(&self) -> ErasedRequest<'a, GetMyShortDescription, Self::Err>;
850
851    fn set_chat_menu_button(&self) -> ErasedRequest<'a, SetChatMenuButton, Self::Err>;
852
853    fn get_chat_menu_button(&self) -> ErasedRequest<'a, GetChatMenuButton, Self::Err>;
854
855    fn set_my_default_administrator_rights(
856        &self,
857    ) -> ErasedRequest<'a, SetMyDefaultAdministratorRights, Self::Err>;
858
859    fn get_my_default_administrator_rights(
860        &self,
861    ) -> ErasedRequest<'a, GetMyDefaultAdministratorRights, Self::Err>;
862
863    fn delete_my_commands(&self) -> ErasedRequest<'a, DeleteMyCommands, Self::Err>;
864
865    fn answer_inline_query(
866        &self,
867        inline_query_id: InlineQueryId,
868        results: Vec<InlineQueryResult>,
869    ) -> ErasedRequest<'a, AnswerInlineQuery, Self::Err>;
870
871    fn answer_web_app_query(
872        &self,
873        web_app_query_id: String,
874        result: InlineQueryResult,
875    ) -> ErasedRequest<'a, AnswerWebAppQuery, Self::Err>;
876
877    fn save_prepared_inline_message(
878        &self,
879        user_id: UserId,
880        result: InlineQueryResult,
881    ) -> ErasedRequest<'a, SavePreparedInlineMessage, Self::Err>;
882
883    fn edit_message_text(
884        &self,
885        chat_id: Recipient,
886        message_id: MessageId,
887        text: String,
888    ) -> ErasedRequest<'a, EditMessageText, Self::Err>;
889
890    fn edit_message_text_inline(
891        &self,
892        inline_message_id: String,
893        text: String,
894    ) -> ErasedRequest<'a, EditMessageTextInline, Self::Err>;
895
896    fn edit_message_caption(
897        &self,
898        chat_id: Recipient,
899        message_id: MessageId,
900    ) -> ErasedRequest<'a, EditMessageCaption, Self::Err>;
901
902    fn edit_message_caption_inline(
903        &self,
904        inline_message_id: String,
905    ) -> ErasedRequest<'a, EditMessageCaptionInline, Self::Err>;
906
907    fn edit_message_media(
908        &self,
909        chat_id: Recipient,
910        message_id: MessageId,
911        media: InputMedia,
912    ) -> ErasedRequest<'a, EditMessageMedia, Self::Err>;
913
914    fn edit_message_media_inline(
915        &self,
916        inline_message_id: String,
917        media: InputMedia,
918    ) -> ErasedRequest<'a, EditMessageMediaInline, Self::Err>;
919
920    fn edit_message_reply_markup(
921        &self,
922        chat_id: Recipient,
923        message_id: MessageId,
924    ) -> ErasedRequest<'a, EditMessageReplyMarkup, Self::Err>;
925
926    fn edit_message_reply_markup_inline(
927        &self,
928        inline_message_id: String,
929    ) -> ErasedRequest<'a, EditMessageReplyMarkupInline, Self::Err>;
930
931    fn stop_poll(
932        &self,
933        chat_id: Recipient,
934        message_id: MessageId,
935    ) -> ErasedRequest<'a, StopPoll, Self::Err>;
936
937    fn delete_message(
938        &self,
939        chat_id: Recipient,
940        message_id: MessageId,
941    ) -> ErasedRequest<'a, DeleteMessage, Self::Err>;
942
943    fn delete_messages(
944        &self,
945        chat_id: Recipient,
946        message_ids: Vec<MessageId>,
947    ) -> ErasedRequest<'a, DeleteMessages, Self::Err>;
948
949    fn send_sticker(
950        &self,
951        chat_id: Recipient,
952        sticker: InputFile,
953    ) -> ErasedRequest<'a, SendSticker, Self::Err>;
954
955    fn get_sticker_set(&self, name: String) -> ErasedRequest<'a, GetStickerSet, Self::Err>;
956
957    fn get_custom_emoji_stickers(
958        &self,
959        custom_emoji_ids: Vec<CustomEmojiId>,
960    ) -> ErasedRequest<'a, GetCustomEmojiStickers, Self::Err>;
961
962    fn upload_sticker_file(
963        &self,
964        user_id: UserId,
965        sticker: InputFile,
966        sticker_format: StickerFormat,
967    ) -> ErasedRequest<'a, UploadStickerFile, Self::Err>;
968
969    fn create_new_sticker_set(
970        &self,
971        user_id: UserId,
972        name: String,
973        title: String,
974        stickers: Vec<InputSticker>,
975    ) -> ErasedRequest<'a, CreateNewStickerSet, Self::Err>;
976
977    fn add_sticker_to_set(
978        &self,
979        user_id: UserId,
980        name: String,
981        sticker: InputSticker,
982    ) -> ErasedRequest<'a, AddStickerToSet, Self::Err>;
983
984    fn set_sticker_position_in_set(
985        &self,
986        sticker: String,
987        position: u32,
988    ) -> ErasedRequest<'a, SetStickerPositionInSet, Self::Err>;
989
990    fn delete_sticker_from_set(
991        &self,
992        sticker: String,
993    ) -> ErasedRequest<'a, DeleteStickerFromSet, Self::Err>;
994
995    fn replace_sticker_in_set(
996        &self,
997        user_id: UserId,
998        name: String,
999        old_sticker: String,
1000        sticker: InputSticker,
1001    ) -> ErasedRequest<'a, ReplaceStickerInSet, Self::Err>;
1002
1003    fn set_sticker_set_thumbnail(
1004        &self,
1005        name: String,
1006        user_id: UserId,
1007        format: StickerFormat,
1008    ) -> ErasedRequest<'a, SetStickerSetThumbnail, Self::Err>;
1009
1010    fn set_custom_emoji_sticker_set_thumbnail(
1011        &self,
1012        name: String,
1013    ) -> ErasedRequest<'a, SetCustomEmojiStickerSetThumbnail, Self::Err>;
1014
1015    fn set_sticker_set_title(
1016        &self,
1017        name: String,
1018        title: String,
1019    ) -> ErasedRequest<'a, SetStickerSetTitle, Self::Err>;
1020
1021    fn delete_sticker_set(&self, name: String) -> ErasedRequest<'a, DeleteStickerSet, Self::Err>;
1022
1023    fn set_sticker_emoji_list(
1024        &self,
1025        sticker: String,
1026        emoji_list: Vec<String>,
1027    ) -> ErasedRequest<'a, SetStickerEmojiList, Self::Err>;
1028
1029    fn set_sticker_keywords(
1030        &self,
1031        sticker: String,
1032    ) -> ErasedRequest<'a, SetStickerKeywords, Self::Err>;
1033
1034    fn set_sticker_mask_position(
1035        &self,
1036        sticker: String,
1037    ) -> ErasedRequest<'a, SetStickerMaskPosition, Self::Err>;
1038
1039    fn get_available_gifts(&self) -> ErasedRequest<'a, GetAvailableGifts, Self::Err>;
1040
1041    fn send_gift(&self, user_id: UserId, gift_id: GiftId)
1042        -> ErasedRequest<'a, SendGift, Self::Err>;
1043
1044    fn send_gift_chat(
1045        &self,
1046        chat_id: Recipient,
1047        gift_id: GiftId,
1048    ) -> ErasedRequest<'a, SendGiftChat, Self::Err>;
1049
1050    fn gift_premium_subscription(
1051        &self,
1052        user_id: UserId,
1053        month_count: u8,
1054        star_count: u32,
1055    ) -> ErasedRequest<'a, GiftPremiumSubscription, Self::Err>;
1056
1057    fn verify_user(&self, user_id: UserId) -> ErasedRequest<'a, VerifyUser, Self::Err>;
1058
1059    fn verify_chat(&self, chat_id: Recipient) -> ErasedRequest<'a, VerifyChat, Self::Err>;
1060
1061    fn remove_user_verification(
1062        &self,
1063        user_id: UserId,
1064    ) -> ErasedRequest<'a, RemoveUserVerification, Self::Err>;
1065
1066    fn remove_chat_verification(
1067        &self,
1068        chat_id: Recipient,
1069    ) -> ErasedRequest<'a, RemoveChatVerification, Self::Err>;
1070
1071    fn read_business_message(
1072        &self,
1073        business_connection_id: BusinessConnectionId,
1074        chat_id: ChatId,
1075        message_id: MessageId,
1076    ) -> ErasedRequest<'a, ReadBusinessMessage, Self::Err>;
1077
1078    fn delete_business_messages(
1079        &self,
1080        business_connection_id: BusinessConnectionId,
1081        message_ids: Vec<MessageId>,
1082    ) -> ErasedRequest<'a, DeleteBusinessMessages, Self::Err>;
1083
1084    fn set_business_account_name(
1085        &self,
1086        business_connection_id: BusinessConnectionId,
1087        first_name: String,
1088    ) -> ErasedRequest<'a, SetBusinessAccountName, Self::Err>;
1089
1090    fn set_business_account_username(
1091        &self,
1092        business_connection_id: BusinessConnectionId,
1093    ) -> ErasedRequest<'a, SetBusinessAccountUsername, Self::Err>;
1094
1095    fn set_business_account_profile_photo(
1096        &self,
1097        business_connection_id: BusinessConnectionId,
1098        photo: InputProfilePhoto,
1099    ) -> ErasedRequest<'a, SetBusinessAccountProfilePhoto, Self::Err>;
1100
1101    fn remove_business_account_profile_photo(
1102        &self,
1103        business_connection_id: BusinessConnectionId,
1104    ) -> ErasedRequest<'a, RemoveBusinessAccountProfilePhoto, Self::Err>;
1105
1106    fn set_business_account_gift_settings(
1107        &self,
1108        business_connection_id: BusinessConnectionId,
1109        show_gift_button: bool,
1110        accepted_gift_types: AcceptedGiftTypes,
1111    ) -> ErasedRequest<'a, SetBusinessAccountGiftSettings, Self::Err>;
1112
1113    fn get_business_account_star_balance(
1114        &self,
1115        business_connection_id: BusinessConnectionId,
1116    ) -> ErasedRequest<'a, GetBusinessAccountStarBalance, Self::Err>;
1117
1118    fn transfer_business_account_stars(
1119        &self,
1120        business_connection_id: BusinessConnectionId,
1121        star_count: u32,
1122    ) -> ErasedRequest<'a, TransferBusinessAccountStars, Self::Err>;
1123
1124    fn get_business_account_gifts(
1125        &self,
1126        business_connection_id: BusinessConnectionId,
1127    ) -> ErasedRequest<'a, GetBusinessAccountGifts, Self::Err>;
1128
1129    fn convert_gift_to_stars(
1130        &self,
1131        business_connection_id: BusinessConnectionId,
1132        owned_gift_id: OwnedGiftId,
1133    ) -> ErasedRequest<'a, ConvertGiftToStars, Self::Err>;
1134
1135    fn upgrade_gift(
1136        &self,
1137        business_connection_id: BusinessConnectionId,
1138        owned_gift_id: OwnedGiftId,
1139    ) -> ErasedRequest<'a, UpgradeGift, Self::Err>;
1140
1141    fn transfer_gift(
1142        &self,
1143        business_connection_id: BusinessConnectionId,
1144        owned_gift_id: OwnedGiftId,
1145        new_owner_chat_id: ChatId,
1146    ) -> ErasedRequest<'a, TransferGift, Self::Err>;
1147
1148    fn post_story(
1149        &self,
1150        business_connection_id: BusinessConnectionId,
1151        content: InputStoryContent,
1152        active_period: Seconds,
1153    ) -> ErasedRequest<'a, PostStory, Self::Err>;
1154
1155    fn edit_story(
1156        &self,
1157        business_connection_id: BusinessConnectionId,
1158        story_id: StoryId,
1159        content: InputStoryContent,
1160    ) -> ErasedRequest<'a, EditStory, Self::Err>;
1161
1162    fn delete_story(
1163        &self,
1164        business_connection_id: BusinessConnectionId,
1165        story_id: StoryId,
1166    ) -> ErasedRequest<'a, DeleteStory, Self::Err>;
1167
1168    fn set_business_account_bio(
1169        &self,
1170        business_connection_id: BusinessConnectionId,
1171    ) -> ErasedRequest<'a, SetBusinessAccountBio, Self::Err>;
1172
1173    fn send_invoice(
1174        &self,
1175        chat_id: Recipient,
1176        title: String,
1177        description: String,
1178        payload: String,
1179        currency: String,
1180        prices: Vec<LabeledPrice>,
1181    ) -> ErasedRequest<'a, SendInvoice, Self::Err>;
1182
1183    fn create_invoice_link(
1184        &self,
1185        title: String,
1186        description: String,
1187        payload: String,
1188        currency: String,
1189        prices: Vec<LabeledPrice>,
1190    ) -> ErasedRequest<'a, CreateInvoiceLink, Self::Err>;
1191
1192    fn answer_shipping_query(
1193        &self,
1194        shipping_query_id: ShippingQueryId,
1195        ok: bool,
1196    ) -> ErasedRequest<'a, AnswerShippingQuery, Self::Err>;
1197
1198    fn answer_pre_checkout_query(
1199        &self,
1200        pre_checkout_query_id: PreCheckoutQueryId,
1201        ok: bool,
1202    ) -> ErasedRequest<'a, AnswerPreCheckoutQuery, Self::Err>;
1203
1204    fn get_my_star_balance(&self) -> ErasedRequest<'a, GetMyStarBalance, Self::Err>;
1205
1206    fn get_star_transactions(&self) -> ErasedRequest<'a, GetStarTransactions, Self::Err>;
1207
1208    fn refund_star_payment(
1209        &self,
1210        user_id: UserId,
1211        telegram_payment_charge_id: TelegramTransactionId,
1212    ) -> ErasedRequest<'a, RefundStarPayment, Self::Err>;
1213
1214    fn edit_user_star_subscription(
1215        &self,
1216        user_id: UserId,
1217        telegram_payment_charge_id: TelegramTransactionId,
1218        is_canceled: bool,
1219    ) -> ErasedRequest<'a, EditUserStarSubscription, Self::Err>;
1220
1221    fn set_passport_data_errors(
1222        &self,
1223        user_id: UserId,
1224        errors: Vec<PassportElementError>,
1225    ) -> ErasedRequest<'a, SetPassportDataErrors, Self::Err>;
1226
1227    fn send_game(
1228        &self,
1229        chat_id: ChatId,
1230        game_short_name: String,
1231    ) -> ErasedRequest<'a, SendGame, Self::Err>;
1232
1233    fn set_game_score(
1234        &self,
1235        user_id: UserId,
1236        score: u64,
1237        chat_id: u32,
1238        message_id: MessageId,
1239    ) -> ErasedRequest<'a, SetGameScore, Self::Err>;
1240
1241    fn set_game_score_inline(
1242        &self,
1243        user_id: UserId,
1244        score: u64,
1245        inline_message_id: String,
1246    ) -> ErasedRequest<'a, SetGameScoreInline, Self::Err>;
1247
1248    fn get_game_high_scores(
1249        &self,
1250        user_id: UserId,
1251        target: TargetMessage,
1252    ) -> ErasedRequest<'a, GetGameHighScores, Self::Err>;
1253}
1254
1255impl<'a, B> ErasableRequester<'a> for B
1256where
1257    B: Requester + 'a,
1258{
1259    type Err = B::Err;
1260
1261    fn get_updates(&self) -> ErasedRequest<'a, GetUpdates, Self::Err> {
1262        Requester::get_updates(self).erase()
1263    }
1264
1265    fn set_webhook(&self, url: Url) -> ErasedRequest<'a, SetWebhook, Self::Err> {
1266        Requester::set_webhook(self, url).erase()
1267    }
1268
1269    fn delete_webhook(&self) -> ErasedRequest<'a, DeleteWebhook, Self::Err> {
1270        Requester::delete_webhook(self).erase()
1271    }
1272
1273    fn get_webhook_info(&self) -> ErasedRequest<'a, GetWebhookInfo, Self::Err> {
1274        Requester::get_webhook_info(self).erase()
1275    }
1276
1277    fn get_me(&self) -> ErasedRequest<'a, GetMe, Self::Err> {
1278        Requester::get_me(self).erase()
1279    }
1280
1281    fn log_out(&self) -> ErasedRequest<'a, LogOut, Self::Err> {
1282        Requester::log_out(self).erase()
1283    }
1284
1285    fn close(&self) -> ErasedRequest<'a, Close, Self::Err> {
1286        Requester::close(self).erase()
1287    }
1288
1289    fn send_message(
1290        &self,
1291        chat_id: Recipient,
1292        text: String,
1293    ) -> ErasedRequest<'a, SendMessage, Self::Err> {
1294        Requester::send_message(self, chat_id, text).erase()
1295    }
1296
1297    fn forward_message(
1298        &self,
1299        chat_id: Recipient,
1300        from_chat_id: Recipient,
1301        message_id: MessageId,
1302    ) -> ErasedRequest<'a, ForwardMessage, Self::Err> {
1303        Requester::forward_message(self, chat_id, from_chat_id, message_id).erase()
1304    }
1305
1306    fn forward_messages(
1307        &self,
1308        chat_id: Recipient,
1309        from_chat_id: Recipient,
1310        message_ids: Vec<MessageId>,
1311    ) -> ErasedRequest<'a, ForwardMessages, Self::Err> {
1312        Requester::forward_messages(self, chat_id, from_chat_id, message_ids).erase()
1313    }
1314
1315    fn copy_message(
1316        &self,
1317        chat_id: Recipient,
1318        from_chat_id: Recipient,
1319        message_id: MessageId,
1320    ) -> ErasedRequest<'a, CopyMessage, Self::Err> {
1321        Requester::copy_message(self, chat_id, from_chat_id, message_id).erase()
1322    }
1323
1324    fn copy_messages(
1325        &self,
1326        chat_id: Recipient,
1327        from_chat_id: Recipient,
1328        message_ids: Vec<MessageId>,
1329    ) -> ErasedRequest<'a, CopyMessages, Self::Err> {
1330        Requester::copy_messages(self, chat_id, from_chat_id, message_ids).erase()
1331    }
1332
1333    fn send_photo(
1334        &self,
1335        chat_id: Recipient,
1336        photo: InputFile,
1337    ) -> ErasedRequest<'a, SendPhoto, Self::Err> {
1338        Requester::send_photo(self, chat_id, photo).erase()
1339    }
1340
1341    fn send_audio(
1342        &self,
1343        chat_id: Recipient,
1344        audio: InputFile,
1345    ) -> ErasedRequest<'a, SendAudio, Self::Err> {
1346        Requester::send_audio(self, chat_id, audio).erase()
1347    }
1348
1349    fn send_document(
1350        &self,
1351        chat_id: Recipient,
1352        document: InputFile,
1353    ) -> ErasedRequest<'a, SendDocument, Self::Err> {
1354        Requester::send_document(self, chat_id, document).erase()
1355    }
1356
1357    fn send_video(
1358        &self,
1359        chat_id: Recipient,
1360        video: InputFile,
1361    ) -> ErasedRequest<'a, SendVideo, Self::Err> {
1362        Requester::send_video(self, chat_id, video).erase()
1363    }
1364
1365    fn send_animation(
1366        &self,
1367        chat_id: Recipient,
1368        animation: InputFile,
1369    ) -> ErasedRequest<'a, SendAnimation, Self::Err> {
1370        Requester::send_animation(self, chat_id, animation).erase()
1371    }
1372
1373    fn send_voice(
1374        &self,
1375        chat_id: Recipient,
1376        voice: InputFile,
1377    ) -> ErasedRequest<'a, SendVoice, Self::Err> {
1378        Requester::send_voice(self, chat_id, voice).erase()
1379    }
1380
1381    fn send_video_note(
1382        &self,
1383        chat_id: Recipient,
1384        video_note: InputFile,
1385    ) -> ErasedRequest<'a, SendVideoNote, Self::Err> {
1386        Requester::send_video_note(self, chat_id, video_note).erase()
1387    }
1388
1389    fn send_paid_media(
1390        &self,
1391        chat_id: Recipient,
1392        star_count: u32,
1393        media: Vec<InputPaidMedia>,
1394    ) -> ErasedRequest<'a, SendPaidMedia, Self::Err> {
1395        Requester::send_paid_media(self, chat_id, star_count, media).erase()
1396    }
1397
1398    fn send_media_group(
1399        &self,
1400        chat_id: Recipient,
1401        media: Vec<InputMedia>,
1402    ) -> ErasedRequest<'a, SendMediaGroup, Self::Err> {
1403        Requester::send_media_group(self, chat_id, media).erase()
1404    }
1405
1406    fn send_location(
1407        &self,
1408        chat_id: Recipient,
1409        latitude: f64,
1410        longitude: f64,
1411    ) -> ErasedRequest<'a, SendLocation, Self::Err> {
1412        Requester::send_location(self, chat_id, latitude, longitude).erase()
1413    }
1414
1415    fn edit_message_live_location(
1416        &self,
1417        chat_id: Recipient,
1418        message_id: MessageId,
1419        latitude: f64,
1420        longitude: f64,
1421    ) -> ErasedRequest<'a, EditMessageLiveLocation, Self::Err> {
1422        Requester::edit_message_live_location(self, chat_id, message_id, latitude, longitude)
1423            .erase()
1424    }
1425
1426    fn edit_message_live_location_inline(
1427        &self,
1428        inline_message_id: String,
1429        latitude: f64,
1430        longitude: f64,
1431    ) -> ErasedRequest<'a, EditMessageLiveLocationInline, Self::Err> {
1432        Requester::edit_message_live_location_inline(self, inline_message_id, latitude, longitude)
1433            .erase()
1434    }
1435
1436    fn stop_message_live_location(
1437        &self,
1438        chat_id: Recipient,
1439        message_id: MessageId,
1440    ) -> ErasedRequest<'a, StopMessageLiveLocation, Self::Err> {
1441        Requester::stop_message_live_location(self, chat_id, message_id).erase()
1442    }
1443
1444    fn stop_message_live_location_inline(
1445        &self,
1446        inline_message_id: String,
1447    ) -> ErasedRequest<'a, StopMessageLiveLocationInline, Self::Err> {
1448        Requester::stop_message_live_location_inline(self, inline_message_id).erase()
1449    }
1450
1451    fn edit_message_checklist(
1452        &self,
1453        business_connection_id: BusinessConnectionId,
1454        chat_id: ChatId,
1455        message_id: MessageId,
1456        checklist: InputChecklist,
1457    ) -> ErasedRequest<'a, EditMessageChecklist, Self::Err> {
1458        Requester::edit_message_checklist(
1459            self,
1460            business_connection_id,
1461            chat_id,
1462            message_id,
1463            checklist,
1464        )
1465        .erase()
1466    }
1467
1468    fn send_venue(
1469        &self,
1470        chat_id: Recipient,
1471        latitude: f64,
1472        longitude: f64,
1473        title: String,
1474        address: String,
1475    ) -> ErasedRequest<'a, SendVenue, Self::Err> {
1476        Requester::send_venue(self, chat_id, latitude, longitude, title, address).erase()
1477    }
1478
1479    fn send_contact(
1480        &self,
1481        chat_id: Recipient,
1482        phone_number: String,
1483        first_name: String,
1484    ) -> ErasedRequest<'a, SendContact, Self::Err> {
1485        Requester::send_contact(self, chat_id, phone_number, first_name).erase()
1486    }
1487
1488    fn send_poll(
1489        &self,
1490        chat_id: Recipient,
1491        question: String,
1492        options: Vec<InputPollOption>,
1493    ) -> ErasedRequest<'a, SendPoll, Self::Err> {
1494        Requester::send_poll(self, chat_id, question, options).erase()
1495    }
1496
1497    fn send_checklist(
1498        &self,
1499        business_connection_id: BusinessConnectionId,
1500        chat_id: ChatId,
1501        checklist: InputChecklist,
1502    ) -> ErasedRequest<'a, SendChecklist, Self::Err> {
1503        Requester::send_checklist(self, business_connection_id, chat_id, checklist).erase()
1504    }
1505
1506    fn send_dice(&self, chat_id: Recipient) -> ErasedRequest<'a, SendDice, Self::Err> {
1507        Requester::send_dice(self, chat_id).erase()
1508    }
1509
1510    fn send_chat_action(
1511        &self,
1512        chat_id: Recipient,
1513        action: ChatAction,
1514    ) -> ErasedRequest<'a, SendChatAction, Self::Err> {
1515        Requester::send_chat_action(self, chat_id, action).erase()
1516    }
1517
1518    fn set_message_reaction(
1519        &self,
1520        chat_id: Recipient,
1521        message_id: MessageId,
1522    ) -> ErasedRequest<'a, SetMessageReaction, Self::Err> {
1523        Requester::set_message_reaction(self, chat_id, message_id).erase()
1524    }
1525
1526    fn get_user_profile_photos(
1527        &self,
1528        user_id: UserId,
1529    ) -> ErasedRequest<'a, GetUserProfilePhotos, Self::Err> {
1530        Requester::get_user_profile_photos(self, user_id).erase()
1531    }
1532
1533    fn set_user_emoji_status(
1534        &self,
1535        user_id: UserId,
1536    ) -> ErasedRequest<'a, SetUserEmojiStatus, Self::Err> {
1537        Requester::set_user_emoji_status(self, user_id).erase()
1538    }
1539
1540    fn get_file(&self, file_id: FileId) -> ErasedRequest<'a, GetFile, Self::Err> {
1541        Requester::get_file(self, file_id).erase()
1542    }
1543
1544    fn ban_chat_member(
1545        &self,
1546        chat_id: Recipient,
1547        user_id: UserId,
1548    ) -> ErasedRequest<'a, BanChatMember, Self::Err> {
1549        Requester::ban_chat_member(self, chat_id, user_id).erase()
1550    }
1551
1552    fn kick_chat_member(
1553        &self,
1554        chat_id: Recipient,
1555        user_id: UserId,
1556    ) -> ErasedRequest<'a, KickChatMember, Self::Err> {
1557        Requester::kick_chat_member(self, chat_id, user_id).erase()
1558    }
1559
1560    fn unban_chat_member(
1561        &self,
1562        chat_id: Recipient,
1563        user_id: UserId,
1564    ) -> ErasedRequest<'a, UnbanChatMember, Self::Err> {
1565        Requester::unban_chat_member(self, chat_id, user_id).erase()
1566    }
1567
1568    fn restrict_chat_member(
1569        &self,
1570        chat_id: Recipient,
1571        user_id: UserId,
1572        permissions: ChatPermissions,
1573    ) -> ErasedRequest<'a, RestrictChatMember, Self::Err> {
1574        Requester::restrict_chat_member(self, chat_id, user_id, permissions).erase()
1575    }
1576
1577    fn promote_chat_member(
1578        &self,
1579        chat_id: Recipient,
1580        user_id: UserId,
1581    ) -> ErasedRequest<'a, PromoteChatMember, Self::Err> {
1582        Requester::promote_chat_member(self, chat_id, user_id).erase()
1583    }
1584
1585    fn set_chat_administrator_custom_title(
1586        &self,
1587        chat_id: Recipient,
1588        user_id: UserId,
1589        custom_title: String,
1590    ) -> ErasedRequest<'a, SetChatAdministratorCustomTitle, Self::Err> {
1591        Requester::set_chat_administrator_custom_title(self, chat_id, user_id, custom_title).erase()
1592    }
1593
1594    fn ban_chat_sender_chat(
1595        &self,
1596        chat_id: Recipient,
1597        sender_chat_id: ChatId,
1598    ) -> ErasedRequest<'a, BanChatSenderChat, Self::Err> {
1599        Requester::ban_chat_sender_chat(self, chat_id, sender_chat_id).erase()
1600    }
1601
1602    fn unban_chat_sender_chat(
1603        &self,
1604        chat_id: Recipient,
1605        sender_chat_id: ChatId,
1606    ) -> ErasedRequest<'a, UnbanChatSenderChat, Self::Err> {
1607        Requester::unban_chat_sender_chat(self, chat_id, sender_chat_id).erase()
1608    }
1609
1610    fn set_chat_permissions(
1611        &self,
1612        chat_id: Recipient,
1613        permissions: ChatPermissions,
1614    ) -> ErasedRequest<'a, SetChatPermissions, Self::Err> {
1615        Requester::set_chat_permissions(self, chat_id, permissions).erase()
1616    }
1617
1618    fn export_chat_invite_link(
1619        &self,
1620        chat_id: Recipient,
1621    ) -> ErasedRequest<'a, ExportChatInviteLink, Self::Err> {
1622        Requester::export_chat_invite_link(self, chat_id).erase()
1623    }
1624
1625    fn create_chat_invite_link(
1626        &self,
1627        chat_id: Recipient,
1628    ) -> ErasedRequest<'a, CreateChatInviteLink, Self::Err> {
1629        Requester::create_chat_invite_link(self, chat_id).erase()
1630    }
1631
1632    fn edit_chat_invite_link(
1633        &self,
1634        chat_id: Recipient,
1635        invite_link: String,
1636    ) -> ErasedRequest<'a, EditChatInviteLink, Self::Err> {
1637        Requester::edit_chat_invite_link(self, chat_id, invite_link).erase()
1638    }
1639
1640    fn create_chat_subscription_invite_link(
1641        &self,
1642        chat_id: Recipient,
1643        subscription_period: Seconds,
1644        subscription_price: u32,
1645    ) -> ErasedRequest<'a, CreateChatSubscriptionInviteLink, Self::Err> {
1646        Requester::create_chat_subscription_invite_link(
1647            self,
1648            chat_id,
1649            subscription_period,
1650            subscription_price,
1651        )
1652        .erase()
1653    }
1654
1655    fn edit_chat_subscription_invite_link(
1656        &self,
1657        chat_id: Recipient,
1658        invite_link: String,
1659    ) -> ErasedRequest<'a, EditChatSubscriptionInviteLink, Self::Err> {
1660        Requester::edit_chat_subscription_invite_link(self, chat_id, invite_link).erase()
1661    }
1662
1663    fn revoke_chat_invite_link(
1664        &self,
1665        chat_id: Recipient,
1666        invite_link: String,
1667    ) -> ErasedRequest<'a, RevokeChatInviteLink, Self::Err> {
1668        Requester::revoke_chat_invite_link(self, chat_id, invite_link).erase()
1669    }
1670
1671    /// For Telegram documentation see [`ApproveChatJoinRequest`].
1672    fn approve_chat_join_request(
1673        &self,
1674        chat_id: Recipient,
1675        user_id: UserId,
1676    ) -> ErasedRequest<'a, ApproveChatJoinRequest, Self::Err> {
1677        Requester::approve_chat_join_request(self, chat_id, user_id).erase()
1678    }
1679
1680    /// For Telegram documentation see [`DeclineChatJoinRequest`].
1681    fn decline_chat_join_request(
1682        &self,
1683        chat_id: Recipient,
1684        user_id: UserId,
1685    ) -> ErasedRequest<'a, DeclineChatJoinRequest, Self::Err> {
1686        Requester::decline_chat_join_request(self, chat_id, user_id).erase()
1687    }
1688
1689    fn set_chat_photo(
1690        &self,
1691        chat_id: Recipient,
1692        photo: InputFile,
1693    ) -> ErasedRequest<'a, SetChatPhoto, Self::Err> {
1694        Requester::set_chat_photo(self, chat_id, photo).erase()
1695    }
1696
1697    fn delete_chat_photo(
1698        &self,
1699        chat_id: Recipient,
1700    ) -> ErasedRequest<'a, DeleteChatPhoto, Self::Err> {
1701        Requester::delete_chat_photo(self, chat_id).erase()
1702    }
1703
1704    fn set_chat_title(
1705        &self,
1706        chat_id: Recipient,
1707        title: String,
1708    ) -> ErasedRequest<'a, SetChatTitle, Self::Err> {
1709        Requester::set_chat_title(self, chat_id, title).erase()
1710    }
1711
1712    fn set_chat_description(
1713        &self,
1714        chat_id: Recipient,
1715    ) -> ErasedRequest<'a, SetChatDescription, Self::Err> {
1716        Requester::set_chat_description(self, chat_id).erase()
1717    }
1718
1719    fn pin_chat_message(
1720        &self,
1721        chat_id: Recipient,
1722        message_id: MessageId,
1723    ) -> ErasedRequest<'a, PinChatMessage, Self::Err> {
1724        Requester::pin_chat_message(self, chat_id, message_id).erase()
1725    }
1726
1727    fn unpin_chat_message(
1728        &self,
1729        chat_id: Recipient,
1730    ) -> ErasedRequest<'a, UnpinChatMessage, Self::Err> {
1731        Requester::unpin_chat_message(self, chat_id).erase()
1732    }
1733
1734    fn unpin_all_chat_messages(
1735        &self,
1736        chat_id: Recipient,
1737    ) -> ErasedRequest<'a, UnpinAllChatMessages, Self::Err> {
1738        Requester::unpin_all_chat_messages(self, chat_id).erase()
1739    }
1740
1741    fn leave_chat(&self, chat_id: Recipient) -> ErasedRequest<'a, LeaveChat, Self::Err> {
1742        Requester::leave_chat(self, chat_id).erase()
1743    }
1744
1745    fn get_chat(&self, chat_id: Recipient) -> ErasedRequest<'a, GetChat, Self::Err> {
1746        Requester::get_chat(self, chat_id).erase()
1747    }
1748
1749    fn get_chat_administrators(
1750        &self,
1751        chat_id: Recipient,
1752    ) -> ErasedRequest<'a, GetChatAdministrators, Self::Err> {
1753        Requester::get_chat_administrators(self, chat_id).erase()
1754    }
1755
1756    fn get_chat_member_count(
1757        &self,
1758        chat_id: Recipient,
1759    ) -> ErasedRequest<'a, GetChatMemberCount, Self::Err> {
1760        Requester::get_chat_member_count(self, chat_id).erase()
1761    }
1762
1763    fn get_chat_members_count(
1764        &self,
1765        chat_id: Recipient,
1766    ) -> ErasedRequest<'a, GetChatMembersCount, Self::Err> {
1767        Requester::get_chat_members_count(self, chat_id).erase()
1768    }
1769
1770    fn get_chat_member(
1771        &self,
1772        chat_id: Recipient,
1773        user_id: UserId,
1774    ) -> ErasedRequest<'a, GetChatMember, Self::Err> {
1775        Requester::get_chat_member(self, chat_id, user_id).erase()
1776    }
1777
1778    fn set_chat_sticker_set(
1779        &self,
1780        chat_id: Recipient,
1781        sticker_set_name: String,
1782    ) -> ErasedRequest<'a, SetChatStickerSet, Self::Err> {
1783        Requester::set_chat_sticker_set(self, chat_id, sticker_set_name).erase()
1784    }
1785
1786    fn delete_chat_sticker_set(
1787        &self,
1788        chat_id: Recipient,
1789    ) -> ErasedRequest<'a, DeleteChatStickerSet, Self::Err> {
1790        Requester::delete_chat_sticker_set(self, chat_id).erase()
1791    }
1792
1793    fn get_forum_topic_icon_stickers(
1794        &self,
1795    ) -> ErasedRequest<'a, GetForumTopicIconStickers, Self::Err> {
1796        Requester::get_forum_topic_icon_stickers(self).erase()
1797    }
1798
1799    fn create_forum_topic(
1800        &self,
1801        chat_id: Recipient,
1802        name: String,
1803    ) -> ErasedRequest<'a, CreateForumTopic, Self::Err> {
1804        Requester::create_forum_topic(self, chat_id, name).erase()
1805    }
1806
1807    fn edit_forum_topic(
1808        &self,
1809        chat_id: Recipient,
1810        message_thread_id: ThreadId,
1811    ) -> ErasedRequest<'a, EditForumTopic, Self::Err> {
1812        Requester::edit_forum_topic(self, chat_id, message_thread_id).erase()
1813    }
1814
1815    fn close_forum_topic(
1816        &self,
1817        chat_id: Recipient,
1818        message_thread_id: ThreadId,
1819    ) -> ErasedRequest<'a, CloseForumTopic, Self::Err> {
1820        Requester::close_forum_topic(self, chat_id, message_thread_id).erase()
1821    }
1822
1823    fn reopen_forum_topic(
1824        &self,
1825        chat_id: Recipient,
1826        message_thread_id: ThreadId,
1827    ) -> ErasedRequest<'a, ReopenForumTopic, Self::Err> {
1828        Requester::reopen_forum_topic(self, chat_id, message_thread_id).erase()
1829    }
1830
1831    fn delete_forum_topic(
1832        &self,
1833        chat_id: Recipient,
1834        message_thread_id: ThreadId,
1835    ) -> ErasedRequest<'a, DeleteForumTopic, Self::Err> {
1836        Requester::delete_forum_topic(self, chat_id, message_thread_id).erase()
1837    }
1838
1839    fn unpin_all_forum_topic_messages(
1840        &self,
1841        chat_id: Recipient,
1842        message_thread_id: ThreadId,
1843    ) -> ErasedRequest<'a, UnpinAllForumTopicMessages, Self::Err> {
1844        Requester::unpin_all_forum_topic_messages(self, chat_id, message_thread_id).erase()
1845    }
1846
1847    fn edit_general_forum_topic(
1848        &self,
1849        chat_id: Recipient,
1850        name: String,
1851    ) -> ErasedRequest<'a, EditGeneralForumTopic, Self::Err> {
1852        Requester::edit_general_forum_topic(self, chat_id, name).erase()
1853    }
1854
1855    fn close_general_forum_topic(
1856        &self,
1857        chat_id: Recipient,
1858    ) -> ErasedRequest<'a, CloseGeneralForumTopic, Self::Err> {
1859        Requester::close_general_forum_topic(self, chat_id).erase()
1860    }
1861
1862    fn reopen_general_forum_topic(
1863        &self,
1864        chat_id: Recipient,
1865    ) -> ErasedRequest<'a, ReopenGeneralForumTopic, Self::Err> {
1866        Requester::reopen_general_forum_topic(self, chat_id).erase()
1867    }
1868
1869    fn hide_general_forum_topic(
1870        &self,
1871        chat_id: Recipient,
1872    ) -> ErasedRequest<'a, HideGeneralForumTopic, Self::Err> {
1873        Requester::hide_general_forum_topic(self, chat_id).erase()
1874    }
1875
1876    fn unhide_general_forum_topic(
1877        &self,
1878        chat_id: Recipient,
1879    ) -> ErasedRequest<'a, UnhideGeneralForumTopic, Self::Err> {
1880        Requester::unhide_general_forum_topic(self, chat_id).erase()
1881    }
1882
1883    fn unpin_all_general_forum_topic_messages(
1884        &self,
1885        chat_id: Recipient,
1886    ) -> ErasedRequest<'a, UnpinAllGeneralForumTopicMessages, Self::Err> {
1887        Requester::unpin_all_general_forum_topic_messages(self, chat_id).erase()
1888    }
1889
1890    fn answer_callback_query(
1891        &self,
1892        callback_query_id: CallbackQueryId,
1893    ) -> ErasedRequest<'a, AnswerCallbackQuery, Self::Err> {
1894        Requester::answer_callback_query(self, callback_query_id).erase()
1895    }
1896
1897    fn get_user_chat_boosts(
1898        &self,
1899        chat_id: Recipient,
1900        user_id: UserId,
1901    ) -> ErasedRequest<'a, GetUserChatBoosts, Self::Err> {
1902        Requester::get_user_chat_boosts(self, chat_id, user_id).erase()
1903    }
1904
1905    fn set_my_commands(
1906        &self,
1907        commands: Vec<BotCommand>,
1908    ) -> ErasedRequest<'a, SetMyCommands, Self::Err> {
1909        Requester::set_my_commands(self, commands).erase()
1910    }
1911
1912    fn get_business_connection(
1913        &self,
1914        business_connection_id: BusinessConnectionId,
1915    ) -> ErasedRequest<'a, GetBusinessConnection, Self::Err> {
1916        Requester::get_business_connection(self, business_connection_id).erase()
1917    }
1918
1919    fn get_my_commands(&self) -> ErasedRequest<'a, GetMyCommands, Self::Err> {
1920        Requester::get_my_commands(self).erase()
1921    }
1922
1923    fn set_my_name(&self) -> ErasedRequest<'a, SetMyName, Self::Err> {
1924        Requester::set_my_name(self).erase()
1925    }
1926
1927    fn get_my_name(&self) -> ErasedRequest<'a, GetMyName, Self::Err> {
1928        Requester::get_my_name(self).erase()
1929    }
1930
1931    fn set_my_description(&self) -> ErasedRequest<'a, SetMyDescription, Self::Err> {
1932        Requester::set_my_description(self).erase()
1933    }
1934
1935    fn get_my_description(&self) -> ErasedRequest<'a, GetMyDescription, Self::Err> {
1936        Requester::get_my_description(self).erase()
1937    }
1938
1939    fn set_my_short_description(&self) -> ErasedRequest<'a, SetMyShortDescription, Self::Err> {
1940        Requester::set_my_short_description(self).erase()
1941    }
1942
1943    fn get_my_short_description(&self) -> ErasedRequest<'a, GetMyShortDescription, Self::Err> {
1944        Requester::get_my_short_description(self).erase()
1945    }
1946
1947    fn set_chat_menu_button(&self) -> ErasedRequest<'a, SetChatMenuButton, Self::Err> {
1948        Requester::set_chat_menu_button(self).erase()
1949    }
1950
1951    fn get_chat_menu_button(&self) -> ErasedRequest<'a, GetChatMenuButton, Self::Err> {
1952        Requester::get_chat_menu_button(self).erase()
1953    }
1954
1955    fn set_my_default_administrator_rights(
1956        &self,
1957    ) -> ErasedRequest<'a, SetMyDefaultAdministratorRights, Self::Err> {
1958        Requester::set_my_default_administrator_rights(self).erase()
1959    }
1960
1961    fn get_my_default_administrator_rights(
1962        &self,
1963    ) -> ErasedRequest<'a, GetMyDefaultAdministratorRights, Self::Err> {
1964        Requester::get_my_default_administrator_rights(self).erase()
1965    }
1966
1967    fn delete_my_commands(&self) -> ErasedRequest<'a, DeleteMyCommands, Self::Err> {
1968        Requester::delete_my_commands(self).erase()
1969    }
1970
1971    fn answer_inline_query(
1972        &self,
1973        inline_query_id: InlineQueryId,
1974        results: Vec<InlineQueryResult>,
1975    ) -> ErasedRequest<'a, AnswerInlineQuery, Self::Err> {
1976        Requester::answer_inline_query(self, inline_query_id, results).erase()
1977    }
1978
1979    fn answer_web_app_query(
1980        &self,
1981        web_app_query_id: String,
1982        result: InlineQueryResult,
1983    ) -> ErasedRequest<'a, AnswerWebAppQuery, Self::Err> {
1984        Requester::answer_web_app_query(self, web_app_query_id, result).erase()
1985    }
1986
1987    fn save_prepared_inline_message(
1988        &self,
1989        user_id: UserId,
1990        result: InlineQueryResult,
1991    ) -> ErasedRequest<'a, SavePreparedInlineMessage, Self::Err> {
1992        Requester::save_prepared_inline_message(self, user_id, result).erase()
1993    }
1994
1995    fn edit_message_text(
1996        &self,
1997        chat_id: Recipient,
1998        message_id: MessageId,
1999        text: String,
2000    ) -> ErasedRequest<'a, EditMessageText, Self::Err> {
2001        Requester::edit_message_text(self, chat_id, message_id, text).erase()
2002    }
2003
2004    fn edit_message_text_inline(
2005        &self,
2006        inline_message_id: String,
2007        text: String,
2008    ) -> ErasedRequest<'a, EditMessageTextInline, Self::Err> {
2009        Requester::edit_message_text_inline(self, inline_message_id, text).erase()
2010    }
2011
2012    fn edit_message_caption(
2013        &self,
2014        chat_id: Recipient,
2015        message_id: MessageId,
2016    ) -> ErasedRequest<'a, EditMessageCaption, Self::Err> {
2017        Requester::edit_message_caption(self, chat_id, message_id).erase()
2018    }
2019
2020    fn edit_message_caption_inline(
2021        &self,
2022        inline_message_id: String,
2023    ) -> ErasedRequest<'a, EditMessageCaptionInline, Self::Err> {
2024        Requester::edit_message_caption_inline(self, inline_message_id).erase()
2025    }
2026
2027    fn edit_message_media(
2028        &self,
2029        chat_id: Recipient,
2030        message_id: MessageId,
2031        media: InputMedia,
2032    ) -> ErasedRequest<'a, EditMessageMedia, Self::Err> {
2033        Requester::edit_message_media(self, chat_id, message_id, media).erase()
2034    }
2035
2036    fn edit_message_media_inline(
2037        &self,
2038        inline_message_id: String,
2039        media: InputMedia,
2040    ) -> ErasedRequest<'a, EditMessageMediaInline, Self::Err> {
2041        Requester::edit_message_media_inline(self, inline_message_id, media).erase()
2042    }
2043
2044    fn edit_message_reply_markup(
2045        &self,
2046        chat_id: Recipient,
2047        message_id: MessageId,
2048    ) -> ErasedRequest<'a, EditMessageReplyMarkup, Self::Err> {
2049        Requester::edit_message_reply_markup(self, chat_id, message_id).erase()
2050    }
2051
2052    fn edit_message_reply_markup_inline(
2053        &self,
2054        inline_message_id: String,
2055    ) -> ErasedRequest<'a, EditMessageReplyMarkupInline, Self::Err> {
2056        Requester::edit_message_reply_markup_inline(self, inline_message_id).erase()
2057    }
2058
2059    fn stop_poll(
2060        &self,
2061        chat_id: Recipient,
2062        message_id: MessageId,
2063    ) -> ErasedRequest<'a, StopPoll, Self::Err> {
2064        Requester::stop_poll(self, chat_id, message_id).erase()
2065    }
2066
2067    fn delete_message(
2068        &self,
2069        chat_id: Recipient,
2070        message_id: MessageId,
2071    ) -> ErasedRequest<'a, DeleteMessage, Self::Err> {
2072        Requester::delete_message(self, chat_id, message_id).erase()
2073    }
2074
2075    fn delete_messages(
2076        &self,
2077        chat_id: Recipient,
2078        message_ids: Vec<MessageId>,
2079    ) -> ErasedRequest<'a, DeleteMessages, Self::Err> {
2080        Requester::delete_messages(self, chat_id, message_ids).erase()
2081    }
2082
2083    fn send_sticker(
2084        &self,
2085        chat_id: Recipient,
2086        sticker: InputFile,
2087    ) -> ErasedRequest<'a, SendSticker, Self::Err> {
2088        Requester::send_sticker(self, chat_id, sticker).erase()
2089    }
2090
2091    fn get_sticker_set(&self, name: String) -> ErasedRequest<'a, GetStickerSet, Self::Err> {
2092        Requester::get_sticker_set(self, name).erase()
2093    }
2094
2095    fn get_custom_emoji_stickers(
2096        &self,
2097        custom_emoji_ids: Vec<CustomEmojiId>,
2098    ) -> ErasedRequest<'a, GetCustomEmojiStickers, Self::Err> {
2099        Requester::get_custom_emoji_stickers(self, custom_emoji_ids).erase()
2100    }
2101
2102    fn upload_sticker_file(
2103        &self,
2104        user_id: UserId,
2105        sticker: InputFile,
2106        sticker_format: StickerFormat,
2107    ) -> ErasedRequest<'a, UploadStickerFile, Self::Err> {
2108        Requester::upload_sticker_file(self, user_id, sticker, sticker_format).erase()
2109    }
2110
2111    fn create_new_sticker_set(
2112        &self,
2113        user_id: UserId,
2114        name: String,
2115        title: String,
2116        stickers: Vec<InputSticker>,
2117    ) -> ErasedRequest<'a, CreateNewStickerSet, Self::Err> {
2118        Requester::create_new_sticker_set(self, user_id, name, title, stickers).erase()
2119    }
2120
2121    fn add_sticker_to_set(
2122        &self,
2123        user_id: UserId,
2124        name: String,
2125        sticker: InputSticker,
2126    ) -> ErasedRequest<'a, AddStickerToSet, Self::Err> {
2127        Requester::add_sticker_to_set(self, user_id, name, sticker).erase()
2128    }
2129
2130    fn set_sticker_position_in_set(
2131        &self,
2132        sticker: String,
2133        position: u32,
2134    ) -> ErasedRequest<'a, SetStickerPositionInSet, Self::Err> {
2135        Requester::set_sticker_position_in_set(self, sticker, position).erase()
2136    }
2137
2138    fn delete_sticker_from_set(
2139        &self,
2140        sticker: String,
2141    ) -> ErasedRequest<'a, DeleteStickerFromSet, Self::Err> {
2142        Requester::delete_sticker_from_set(self, sticker).erase()
2143    }
2144
2145    fn replace_sticker_in_set(
2146        &self,
2147        user_id: UserId,
2148        name: String,
2149        old_sticker: String,
2150        sticker: InputSticker,
2151    ) -> ErasedRequest<'a, ReplaceStickerInSet, Self::Err> {
2152        Requester::replace_sticker_in_set(self, user_id, name, old_sticker, sticker).erase()
2153    }
2154
2155    fn set_sticker_set_thumbnail(
2156        &self,
2157        name: String,
2158        user_id: UserId,
2159        format: StickerFormat,
2160    ) -> ErasedRequest<'a, SetStickerSetThumbnail, Self::Err> {
2161        Requester::set_sticker_set_thumbnail(self, name, user_id, format).erase()
2162    }
2163
2164    fn set_custom_emoji_sticker_set_thumbnail(
2165        &self,
2166        name: String,
2167    ) -> ErasedRequest<'a, SetCustomEmojiStickerSetThumbnail, Self::Err> {
2168        Requester::set_custom_emoji_sticker_set_thumbnail(self, name).erase()
2169    }
2170
2171    fn set_sticker_set_title(
2172        &self,
2173        name: String,
2174        title: String,
2175    ) -> ErasedRequest<'a, SetStickerSetTitle, Self::Err> {
2176        Requester::set_sticker_set_title(self, name, title).erase()
2177    }
2178
2179    fn delete_sticker_set(&self, name: String) -> ErasedRequest<'a, DeleteStickerSet, Self::Err> {
2180        Requester::delete_sticker_set(self, name).erase()
2181    }
2182
2183    fn set_sticker_emoji_list(
2184        &self,
2185        sticker: String,
2186        emoji_list: Vec<String>,
2187    ) -> ErasedRequest<'a, SetStickerEmojiList, Self::Err> {
2188        Requester::set_sticker_emoji_list(self, sticker, emoji_list).erase()
2189    }
2190
2191    fn set_sticker_keywords(
2192        &self,
2193        sticker: String,
2194    ) -> ErasedRequest<'a, SetStickerKeywords, Self::Err> {
2195        Requester::set_sticker_keywords(self, sticker).erase()
2196    }
2197
2198    fn set_sticker_mask_position(
2199        &self,
2200        sticker: String,
2201    ) -> ErasedRequest<'a, SetStickerMaskPosition, Self::Err> {
2202        Requester::set_sticker_mask_position(self, sticker).erase()
2203    }
2204
2205    fn get_available_gifts(&self) -> ErasedRequest<'a, GetAvailableGifts, Self::Err> {
2206        Requester::get_available_gifts(self).erase()
2207    }
2208
2209    fn send_gift(
2210        &self,
2211        user_id: UserId,
2212        gift_id: GiftId,
2213    ) -> ErasedRequest<'a, SendGift, Self::Err> {
2214        Requester::send_gift(self, user_id, gift_id).erase()
2215    }
2216
2217    fn send_gift_chat(
2218        &self,
2219        chat_id: Recipient,
2220        gift_id: GiftId,
2221    ) -> ErasedRequest<'a, SendGiftChat, Self::Err> {
2222        Requester::send_gift_chat(self, chat_id, gift_id).erase()
2223    }
2224
2225    fn gift_premium_subscription(
2226        &self,
2227        user_id: UserId,
2228        month_count: u8,
2229        star_count: u32,
2230    ) -> ErasedRequest<'a, GiftPremiumSubscription, Self::Err> {
2231        Requester::gift_premium_subscription(self, user_id, month_count, star_count).erase()
2232    }
2233
2234    fn verify_user(&self, user_id: UserId) -> ErasedRequest<'a, VerifyUser, Self::Err> {
2235        Requester::verify_user(self, user_id).erase()
2236    }
2237
2238    fn verify_chat(&self, chat_id: Recipient) -> ErasedRequest<'a, VerifyChat, Self::Err> {
2239        Requester::verify_chat(self, chat_id).erase()
2240    }
2241
2242    fn remove_user_verification(
2243        &self,
2244        user_id: UserId,
2245    ) -> ErasedRequest<'a, RemoveUserVerification, Self::Err> {
2246        Requester::remove_user_verification(self, user_id).erase()
2247    }
2248
2249    fn remove_chat_verification(
2250        &self,
2251        chat_id: Recipient,
2252    ) -> ErasedRequest<'a, RemoveChatVerification, Self::Err> {
2253        Requester::remove_chat_verification(self, chat_id).erase()
2254    }
2255
2256    fn read_business_message(
2257        &self,
2258        business_connection_id: BusinessConnectionId,
2259        chat_id: ChatId,
2260        message_id: MessageId,
2261    ) -> ErasedRequest<'a, ReadBusinessMessage, Self::Err> {
2262        Requester::read_business_message(self, business_connection_id, chat_id, message_id).erase()
2263    }
2264
2265    fn delete_business_messages(
2266        &self,
2267        business_connection_id: BusinessConnectionId,
2268        message_ids: Vec<MessageId>,
2269    ) -> ErasedRequest<'a, DeleteBusinessMessages, Self::Err> {
2270        Requester::delete_business_messages(self, business_connection_id, message_ids).erase()
2271    }
2272
2273    fn set_business_account_name(
2274        &self,
2275        business_connection_id: BusinessConnectionId,
2276        first_name: String,
2277    ) -> ErasedRequest<'a, SetBusinessAccountName, Self::Err> {
2278        Requester::set_business_account_name(self, business_connection_id, first_name).erase()
2279    }
2280
2281    fn set_business_account_username(
2282        &self,
2283        business_connection_id: BusinessConnectionId,
2284    ) -> ErasedRequest<'a, SetBusinessAccountUsername, Self::Err> {
2285        Requester::set_business_account_username(self, business_connection_id).erase()
2286    }
2287
2288    fn set_business_account_bio(
2289        &self,
2290        business_connection_id: BusinessConnectionId,
2291    ) -> ErasedRequest<'a, SetBusinessAccountBio, Self::Err> {
2292        Requester::set_business_account_bio(self, business_connection_id).erase()
2293    }
2294
2295    fn set_business_account_profile_photo(
2296        &self,
2297        business_connection_id: BusinessConnectionId,
2298        photo: InputProfilePhoto,
2299    ) -> ErasedRequest<'a, SetBusinessAccountProfilePhoto, Self::Err> {
2300        Requester::set_business_account_profile_photo(self, business_connection_id, photo).erase()
2301    }
2302
2303    fn remove_business_account_profile_photo(
2304        &self,
2305        business_connection_id: BusinessConnectionId,
2306    ) -> ErasedRequest<'a, RemoveBusinessAccountProfilePhoto, Self::Err> {
2307        Requester::remove_business_account_profile_photo(self, business_connection_id).erase()
2308    }
2309
2310    fn set_business_account_gift_settings(
2311        &self,
2312        business_connection_id: BusinessConnectionId,
2313        show_gift_button: bool,
2314        accepted_gift_types: AcceptedGiftTypes,
2315    ) -> ErasedRequest<'a, SetBusinessAccountGiftSettings, Self::Err> {
2316        Requester::set_business_account_gift_settings(
2317            self,
2318            business_connection_id,
2319            show_gift_button,
2320            accepted_gift_types,
2321        )
2322        .erase()
2323    }
2324
2325    fn get_business_account_star_balance(
2326        &self,
2327        business_connection_id: BusinessConnectionId,
2328    ) -> ErasedRequest<'a, GetBusinessAccountStarBalance, Self::Err> {
2329        Requester::get_business_account_star_balance(self, business_connection_id).erase()
2330    }
2331
2332    fn transfer_business_account_stars(
2333        &self,
2334        business_connection_id: BusinessConnectionId,
2335        star_count: u32,
2336    ) -> ErasedRequest<'a, TransferBusinessAccountStars, Self::Err> {
2337        Requester::transfer_business_account_stars(self, business_connection_id, star_count).erase()
2338    }
2339
2340    fn get_business_account_gifts(
2341        &self,
2342        business_connection_id: BusinessConnectionId,
2343    ) -> ErasedRequest<'a, GetBusinessAccountGifts, Self::Err> {
2344        Requester::get_business_account_gifts(self, business_connection_id).erase()
2345    }
2346
2347    fn convert_gift_to_stars(
2348        &self,
2349        business_connection_id: BusinessConnectionId,
2350        owned_gift_id: OwnedGiftId,
2351    ) -> ErasedRequest<'a, ConvertGiftToStars, Self::Err> {
2352        Requester::convert_gift_to_stars(self, business_connection_id, owned_gift_id).erase()
2353    }
2354
2355    fn upgrade_gift(
2356        &self,
2357        business_connection_id: BusinessConnectionId,
2358        owned_gift_id: OwnedGiftId,
2359    ) -> ErasedRequest<'a, UpgradeGift, Self::Err> {
2360        Requester::upgrade_gift(self, business_connection_id, owned_gift_id).erase()
2361    }
2362
2363    fn transfer_gift(
2364        &self,
2365        business_connection_id: BusinessConnectionId,
2366        owned_gift_id: OwnedGiftId,
2367        new_owner_chat_id: ChatId,
2368    ) -> ErasedRequest<'a, TransferGift, Self::Err> {
2369        Requester::transfer_gift(self, business_connection_id, owned_gift_id, new_owner_chat_id)
2370            .erase()
2371    }
2372
2373    fn post_story(
2374        &self,
2375        business_connection_id: BusinessConnectionId,
2376        content: InputStoryContent,
2377        active_period: Seconds,
2378    ) -> ErasedRequest<'a, PostStory, Self::Err> {
2379        Requester::post_story(self, business_connection_id, content, active_period).erase()
2380    }
2381
2382    fn edit_story(
2383        &self,
2384        business_connection_id: BusinessConnectionId,
2385        story_id: StoryId,
2386        content: InputStoryContent,
2387    ) -> ErasedRequest<'a, EditStory, Self::Err> {
2388        Requester::edit_story(self, business_connection_id, story_id, content).erase()
2389    }
2390
2391    fn delete_story(
2392        &self,
2393        business_connection_id: BusinessConnectionId,
2394        story_id: StoryId,
2395    ) -> ErasedRequest<'a, DeleteStory, Self::Err> {
2396        Requester::delete_story(self, business_connection_id, story_id).erase()
2397    }
2398
2399    fn send_invoice(
2400        &self,
2401        chat_id: Recipient,
2402        title: String,
2403        description: String,
2404        payload: String,
2405        currency: String,
2406        prices: Vec<LabeledPrice>,
2407    ) -> ErasedRequest<'a, SendInvoice, Self::Err> {
2408        Requester::send_invoice(self, chat_id, title, description, payload, currency, prices)
2409            .erase()
2410    }
2411
2412    fn create_invoice_link(
2413        &self,
2414        title: String,
2415        description: String,
2416        payload: String,
2417        currency: String,
2418        prices: Vec<LabeledPrice>,
2419    ) -> ErasedRequest<'a, CreateInvoiceLink, Self::Err> {
2420        Requester::create_invoice_link(self, title, description, payload, currency, prices).erase()
2421    }
2422
2423    fn answer_shipping_query(
2424        &self,
2425        shipping_query_id: ShippingQueryId,
2426        ok: bool,
2427    ) -> ErasedRequest<'a, AnswerShippingQuery, Self::Err> {
2428        Requester::answer_shipping_query(self, shipping_query_id, ok).erase()
2429    }
2430
2431    fn answer_pre_checkout_query(
2432        &self,
2433        pre_checkout_query_id: PreCheckoutQueryId,
2434        ok: bool,
2435    ) -> ErasedRequest<'a, AnswerPreCheckoutQuery, Self::Err> {
2436        Requester::answer_pre_checkout_query(self, pre_checkout_query_id, ok).erase()
2437    }
2438
2439    fn get_my_star_balance(&self) -> ErasedRequest<'a, GetMyStarBalance, Self::Err> {
2440        Requester::get_my_star_balance(self).erase()
2441    }
2442
2443    fn get_star_transactions(&self) -> ErasedRequest<'a, GetStarTransactions, Self::Err> {
2444        Requester::get_star_transactions(self).erase()
2445    }
2446
2447    fn refund_star_payment(
2448        &self,
2449        user_id: UserId,
2450        telegram_payment_charge_id: TelegramTransactionId,
2451    ) -> ErasedRequest<'a, RefundStarPayment, Self::Err> {
2452        Requester::refund_star_payment(self, user_id, telegram_payment_charge_id).erase()
2453    }
2454
2455    fn edit_user_star_subscription(
2456        &self,
2457        user_id: UserId,
2458        telegram_payment_charge_id: TelegramTransactionId,
2459        is_canceled: bool,
2460    ) -> ErasedRequest<'a, EditUserStarSubscription, Self::Err> {
2461        Requester::edit_user_star_subscription(
2462            self,
2463            user_id,
2464            telegram_payment_charge_id,
2465            is_canceled,
2466        )
2467        .erase()
2468    }
2469
2470    fn set_passport_data_errors(
2471        &self,
2472        user_id: UserId,
2473        errors: Vec<PassportElementError>,
2474    ) -> ErasedRequest<'a, SetPassportDataErrors, Self::Err> {
2475        Requester::set_passport_data_errors(self, user_id, errors).erase()
2476    }
2477
2478    fn send_game(
2479        &self,
2480        chat_id: ChatId,
2481        game_short_name: String,
2482    ) -> ErasedRequest<'a, SendGame, Self::Err> {
2483        Requester::send_game(self, chat_id, game_short_name).erase()
2484    }
2485
2486    fn set_game_score(
2487        &self,
2488        user_id: UserId,
2489        score: u64,
2490        chat_id: u32,
2491        message_id: MessageId,
2492    ) -> ErasedRequest<'a, SetGameScore, Self::Err> {
2493        Requester::set_game_score(self, user_id, score, chat_id, message_id).erase()
2494    }
2495
2496    fn set_game_score_inline(
2497        &self,
2498        user_id: UserId,
2499        score: u64,
2500        inline_message_id: String,
2501    ) -> ErasedRequest<'a, SetGameScoreInline, Self::Err> {
2502        Requester::set_game_score_inline(self, user_id, score, inline_message_id).erase()
2503    }
2504
2505    fn get_game_high_scores(
2506        &self,
2507        user_id: UserId,
2508        target: TargetMessage,
2509    ) -> ErasedRequest<'a, GetGameHighScores, Self::Err> {
2510        Requester::get_game_high_scores(self, user_id, target).erase()
2511    }
2512}