spectacles_model/guild/
audit_log.rs1use serde_json::value::RawValue;
2use serde_repr::{Deserialize_repr, Serialize_repr};
3
4use crate::message::Webhook;
5use crate::snowflake::Snowflake;
6use crate::User;
7
8#[derive(Clone, Debug, Deserialize, Serialize)]
10pub struct GuildAuditLog {
11 pub webhooks: Vec<Webhook>,
13 pub users: Vec<User>,
15 #[serde(rename = "audit_log_entries")]
17 pub entries: Vec<GuildAuditLogEntry>,
18}
19
20#[derive(Clone, Debug, Deserialize, Serialize)]
22pub struct GuildAuditLogEntry {
23 pub target_id: Option<String>,
25 #[serde(default)]
27 pub changes: Option<Vec<GuildAuditLogChange>>,
28 pub user_id: Snowflake,
30 pub id: Snowflake,
32 pub action_type: GuildAuditLogEvent,
34 pub options: Option<GuildAuditEntryInfo>,
36 pub reason: Option<String>,
38}
39
40#[derive(Clone, Debug, Deserialize, Serialize)]
41pub struct GuildAuditLogChange {
42 pub new_value: Box<RawValue>,
45 pub old_value: Box<RawValue>,
48 }
51
52#[derive(Clone, Debug, Deserialize, Serialize)]
53pub struct GuildAuditEntryInfo {
54 #[serde(default)]
57 pub delete_member_days: Option<String>,
58 #[serde(default)]
61 pub members_removed: Option<String>,
62 #[serde(default)]
64 pub channel_id: Option<Snowflake>,
65 #[serde(default)]
67 pub count: Option<String>,
68 #[serde(default)]
70 pub id: Option<Snowflake>,
71 #[serde(default, rename = "type")]
73 pub kind: Option<String>,
74 #[serde(default)]
76 pub role_name: Option<String>,
77}
78
79#[derive(Clone, Debug, Deserialize, Serialize)]
81pub enum GuildAuditLogChangeKey {
82 Name(String),
83 IconHash(String),
84 SplashHash(String),
85}
86
87#[derive(Clone, Debug, Deserialize_repr, Serialize_repr)]
88#[repr(u16)]
89pub enum GuildAuditLogEvent {
90 GuildUpdate = 1,
91 ChannelCreate = 10,
92 ChannelUpdate,
93 ChannelDelete,
94 ChannelOverwriteCreate,
95 ChannelOverwriteUpdate,
96 ChannelOverwriteDelete,
97 MemberKick = 20,
98 MemberPrune,
99 MemberBanAdd,
100 MemberBanRemove,
101 MemberUpdate,
102 MemberRoleUpdate,
103 RoleCreate = 30,
104 RoleUpdate,
105 RoleDelete,
106 InviteCreate = 40,
107 InviteUpdate,
108 InviteDelete,
109 WebhookCreate = 50,
110 WebhookUpdate,
111 WebhookDelete,
112 EmojiCreate = 60,
113 EmojiUpdate,
114 EmojiDelete,
115 MessageDelete = 72,
116}
117
118#[derive(Serialize, Debug, Default)]
119pub struct GetAuditLogOptions {
120 #[serde(skip_serializing_if = "Option::is_none")]
121 user_id: Option<Snowflake>,
122 #[serde(skip_serializing_if = "Option::is_none")]
123 action_type: Option<GuildAuditLogEvent>,
124 #[serde(skip_serializing_if = "Option::is_none")]
125 before: Option<Snowflake>,
126 #[serde(skip_serializing_if = "Option::is_none")]
127 limit: Option<i32>,
128}
129
130impl GetAuditLogOptions {
131 pub fn user_id(mut self, id: Snowflake) -> Self {
133 self.user_id = Some(id);
134 self
135 }
136
137 pub fn action_type(mut self, event: GuildAuditLogEvent) -> Self {
139 self.action_type = Some(event);
140 self
141 }
142
143 pub fn before(mut self, id: Snowflake) -> Self {
145 self.before = Some(id);
146 self
147 }
148
149 pub fn limit(mut self, num: i32) -> Self {
151 self.limit = Some(num);
152 self
153 }
154}