shrimple_telegram/
methods.rs

1use {
2    crate::{types::*, IsDefault},
3    shrimple_telegram_proc_macro::telegram_request,
4    std::borrow::Cow,
5};
6
7#[telegram_request(response_type = True)]
8pub struct AnswerCallbackQuery<'src> {
9    #[telegram_request(via_into)]
10    pub callback_query_id: Cow<'src, str>,
11    #[telegram_request(optional, via_into)]
12    pub text: Cow<'src, str>,
13    #[telegram_request(optional, via_into)]
14    pub show_alert: bool,
15}
16
17#[telegram_request(response_type = True)]
18pub struct DeleteMessage {
19    pub chat_id: ChatId,
20    pub message_id: MessageId,
21}
22
23#[telegram_request(response_type = True)]
24pub struct DeleteWebhook;
25
26#[telegram_request(response_type = Message)]
27pub struct EditMessageReplyMarkup<'src> {
28    pub chat_id: ChatId,
29    pub message_id: MessageId,
30    #[telegram_request(optional, via_into)]
31    pub reply_markup: Option<InlineKeyboardMarkup<'src>>,
32}
33
34#[telegram_request(response_type = Message)]
35pub struct EditMessageText<'src> {
36    pub chat_id: ChatId,
37    pub message_id: MessageId,
38    #[telegram_request(via_into)]
39    pub text: Cow<'src, str>,
40    #[telegram_request(optional, via_into)]
41    pub parse_mode: Option<ParseMode>,
42    #[telegram_request(optional, via_into)]
43    pub reply_markup: Option<InlineKeyboardMarkup<'src>>,
44}
45
46#[telegram_request(response_type = Message)]
47pub struct ForwardMessage {
48    pub chat_id: ChatId,
49    pub from_chat_id: ChatId,
50    pub message_id: MessageId,
51}
52
53#[telegram_request(response_type = User)]
54pub struct GetMe;
55
56#[telegram_request(response_type = Vec<Update>)]
57pub struct GetUpdates<'src> {
58    #[telegram_request(optional, via_into)]
59    pub offset: Option<u32>,
60    #[telegram_request(optional, via_into)]
61    pub limit: Option<u8>,
62    #[telegram_request(optional, via_into)]
63    pub timeout: Option<u32>,
64    #[telegram_request(optional, via_into)]
65    pub allowed_updates: Cow<'src, [AllowedUpdate]>,
66}
67
68#[telegram_request(response_type = Message)]
69pub struct SendAudio<'src> {
70    pub chat_id: ChatId,
71    pub audio: Cow<'src, str>,
72    #[telegram_request(optional, via_into)]
73    pub caption: Cow<'src, str>,
74    #[telegram_request(optional, via_into)]
75    pub reply_to_message_id: Option<MessageId>,
76}
77
78/// # Warning
79///
80/// If the input `document` is a stream, attempting to clone this object or turn it into a future
81/// via [`crate::Request::to_future`] will result in a panic
82#[telegram_request(response_type = Message)]
83pub struct SendDocument<'src> {
84    pub chat_id: ChatId,
85    #[telegram_request(payload)]
86    pub document: InputFile<'src>,
87    #[telegram_request(optional, via_into)]
88    pub caption: Cow<'src, str>,
89    #[telegram_request(optional, via_into)]
90    pub parse_mode: Option<ParseMode>,
91    #[telegram_request(optional, via_into)]
92    pub reply_to_message_id: Option<MessageId>,
93    #[telegram_request(optional, via_into)]
94    pub reply_markup: ReplyMarkup<'src>,
95}
96
97// TODO: ReplyParameters
98
99#[telegram_request(response_type = Message)]
100pub struct SendLocation<'src> {
101    pub chat_id: ChatId,
102    #[serde(flatten)]
103    pub location: Location,
104    #[telegram_request(optional, via_into)]
105    pub reply_to_message_id: Option<MessageId>,
106    #[telegram_request(optional, via_into)]
107    pub disable_notification: Option<bool>,
108    #[telegram_request(optional, via_into)]
109    pub protect_content: Option<bool>,
110    #[telegram_request(optional, via_into)]
111    pub allow_paid_broadcast: Option<bool>,
112    #[telegram_request(optional, via_into)]
113    pub message_effect_id: Cow<'src, str>,
114    #[telegram_request(optional, via_into)]
115    pub reply_markup: ReplyMarkup<'src>,
116}
117
118#[telegram_request(response_type = Message)]
119pub struct SendMessage<'src> {
120    pub chat_id: ChatId,
121    #[telegram_request(via_into)]
122    pub text: Cow<'src, str>,
123    #[telegram_request(optional)]
124    pub business_connection_id: Cow<'src, str>,
125    #[telegram_request(optional, via_into)]
126    pub parse_mode: Option<ParseMode>,
127    #[telegram_request(optional)]
128    pub disable_web_page_preview: bool,
129    #[telegram_request(optional, via_into)]
130    pub reply_to_message_id: Option<MessageId>,
131    #[telegram_request(optional, via_into)]
132    pub reply_markup: ReplyMarkup<'src>,
133}
134
135#[telegram_request(response_type = Message)]
136pub struct SendVideo<'src> {
137    pub chat_id: ChatId,
138    #[telegram_request(via_into)]
139    pub video: Cow<'src, str>,
140    #[telegram_request(optional, via_into)]
141    pub caption: Cow<'src, str>,
142    #[telegram_request(optional, via_into)]
143    pub reply_to_message_id: Option<MessageId>,
144}
145
146#[telegram_request(response_type = True)]
147pub struct SetMyCommands<'src> {
148    #[telegram_request(via_into)]
149    pub commands: Cow<'src, [BotCommand<'src>]>,
150    #[telegram_request(optional, via_into)]
151    pub language_code: Cow<'src, str>,
152}
153
154#[telegram_request(response_type = True)]
155pub struct SetWebhook<'src> {
156    #[telegram_request(via_into)]
157    pub url: Cow<'src, str>,
158    #[telegram_request(optional)]
159    pub drop_pending_updates: bool,
160    #[telegram_request(optional, via_into)]
161    pub secret_token: Cow<'src, str>,
162}