botx_api/bot/models/
command_entities.rs1use 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 pub group_chat_id: Uuid,
26
27 pub sender_huid: Uuid,
29
30 pub forward_type: ForwardType,
32
33 pub source_chat_name: Option<String>,
35
36 pub source_sync_id: Option<Uuid>,
38
39 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 pub source_sync_id: Uuid,
55
56 pub sender: Uuid,
58
59 pub body: String,
61
62 pub mentions: Vec<Mention>,
64
65 pub attachment: Attachment,
67
68 pub reply_type: ReplyType,
70
71 pub source_group_chat_id: Option<Uuid>,
73
74 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}