twilight_model/channel/message/component/file_upload.rs
1use serde::{Deserialize, Serialize};
2
3/// A component allowing uploading files in a modal.
4///
5/// File uploads are only available in modals and must be placed inside a label.
6#[derive(Clone, Debug, Eq, Hash, PartialEq, Deserialize, Serialize)]
7pub struct FileUpload {
8 /// Developer defined identifier.
9 pub custom_id: String,
10 /// Optional identifier for the component.
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub id: Option<i32>,
13 /// Maximum number of items that can be uploaded.
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub max_values: Option<u8>,
16 /// Minimum number of items that can be uploaded.
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub min_values: Option<u8>,
19 /// Whether files have to be uploaded.
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub required: Option<bool>,
22 /// File types to filter for.
23 ///
24 /// Can be `image`, `video`, `audio`, or any dot-prefixed extension such as `.pdf`.
25 ///
26 /// Defaults to no restriction.
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub file_types: Option<Vec<String>>,
29}