botx_api/bot/models/
command_entities.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5use crate::api::models::*;
6
7use super::Attachment;
8
9#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
10#[serde(tag = "type", content = "data")]
11pub enum CommandEntities {
12    #[serde(rename(serialize = "mention", deserialize = "mention"))]
13    Mention(Mention),
14
15    #[serde(rename(serialize = "forward", deserialize = "forward"))]
16    Forward(Forward),
17
18    #[serde(rename(serialize = "reply", deserialize = "reply"))]
19    Reply(Reply),
20}
21
22#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
23pub struct Forward {
24    /// id чата откуда переслали сообщение
25    pub group_chat_id: Uuid,
26
27    /// huid автора сообщения
28    pub sender_huid: Uuid,
29
30    /// chat|channel
31    pub forward_type: ForwardType,
32
33    /// (Optional) - имя чата откуда переслали сообщение
34    pub source_chat_name: Option<String>,
35
36    /// (Optional) - sync_id пересылаемого сообщения
37    pub source_sync_id: Option<Uuid>,
38
39    /// ts пересылаемого сообщения
40    pub source_inserted_at: DateTime<Utc>,
41}
42
43#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
44pub enum ForwardType {
45    #[serde(rename(serialize = "chat", deserialize = "chat"))]
46    Chat,
47    #[serde(rename(serialize = "channel", deserialize = "channel"))]
48    Channel,
49}
50
51#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
52pub struct Reply {
53    /// sync_id исходного сообщения
54    pub source_sync_id: Uuid,
55
56    /// huid автора сообщения
57    pub sender: Uuid,
58
59    /// текст исходного сообщения
60    pub body: String,
61
62    /// меншены исходного сообщения
63    pub mentions: Vec<Mention>,
64
65    /// вложение исходного сообщения
66    pub attachment: Attachment,
67
68    /// chat|botx|group_chat|channel
69    pub reply_type: ReplyType,
70
71    /// (Optional) - ID чата откуда переслали сообщение
72    pub source_group_chat_id: Option<Uuid>,
73
74    /// (Optional) - имя чата откуда переслали сообщение
75    pub source_chat_name: Option<String>,
76}
77
78#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]
79pub enum ReplyType {
80    #[serde(rename(serialize = "chat", deserialize = "chat"))]
81    Chat,
82    #[serde(rename(serialize = "botx", deserialize = "botx"))]
83    Botx,
84    #[serde(rename(serialize = "group_chat", deserialize = "group_chat"))]
85    GroupChat,
86    #[serde(rename(serialize = "channel", deserialize = "channel"))]
87    Channel,
88}