1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//! Types related to inline queries.

use crate::types::{Location, User};
use is_macro::Is;
use serde::Deserialize;

mod id;
pub mod result;

pub use {id::Id, result::Result};

/// Represents the kind of a chat.
#[derive(Debug, Eq, PartialEq, Hash, Clone, Copy, Is, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ChatKind {
    /// The chat is private.
    Sender,
    /// The chat is private.
    Private,
    /// The chat is a channel.
    Channel,
    /// The chat is a group.
    Group,
    /// The chat is a supergroup.
    Supergroup,
}

/// Represents an [`InlineQuery`].
///
/// [`InlineQuery`]: https://core.telegram.org/bots/api#inlinequery
#[derive(Debug, PartialEq, Clone, Deserialize)]
#[non_exhaustive]
pub struct InlineQuery {
    /// The ID of the query.
    pub id: Id,
    /// The user who sent the query.
    pub from: User,
    /// The location of the user, if enabled and allowed.
    pub location: Option<Location>,
    /// The query itself.
    pub query: String,
    /// The offset of the result to be returned.
    pub offset: String,
    /// The type of chat inline query was sent from.
    #[serde(rename = "chat_type")]
    pub chat_kind: Option<ChatKind>,
}