Skip to main content

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}