Struct serenity::model::channel::Attachment [−][src]
A file uploaded with a message. Not to be confused with Embed
s.
Fields (Non-exhaustive)
Struct {{ .. }}
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.id: AttachmentId
The unique ID given to this attachment.
filename: String
The filename of the file that was uploaded. This is equivalent to what the uploader had their file named.
height: Option<u64>
If the attachment is an image, then the height of the image is provided.
proxy_url: String
The proxy URL.
size: u64
The size of the file in bytes.
url: String
The URL of the uploaded attachment.
width: Option<u64>
If the attachment is an image, then the width of the image is provided.
Implementations
impl Attachment
[src]
pub fn dimensions(&self) -> Option<(u64, u64)>
[src]
If this attachment is an image, then a tuple of the width and height in pixels is returned.
pub async fn download(&self) -> Result<Vec<u8>>
[src]
Downloads the attachment, returning back a vector of bytes.
Examples
Download all of the attachments associated with a Message
:
use serenity::model::prelude::*; use serenity::prelude::*; use tokio::fs::File; use tokio::io::AsyncWriteExt; use std::io::Write; use std::path::Path; struct Handler; #[serenity::async_trait] impl EventHandler for Handler { async fn message(&self, context: Context, mut message: Message) { for attachment in message.attachments { let content = match attachment.download().await { Ok(content) => content, Err(why) => { println!("Error downloading attachment: {:?}", why); let _ = message.channel_id.say(&context, "Error downloading attachment").await; return; }, }; let mut file = match File::create(&attachment.filename).await { Ok(file) => file, Err(why) => { println!("Error creating file: {:?}", why); let _ = message.channel_id.say(&context, "Error creating file").await; return; }, }; if let Err(why) = file.write(&content).await { println!("Error writing to file: {:?}", why); return; } let _ = message.channel_id.say(&context, &format!("Saved {:?}", attachment.filename)).await; } } async fn ready(&self, _: Context, ready: Ready) { println!("{} is connected!", ready.user.name); } } let token = std::env::var("DISCORD_TOKEN")?; let mut client = Client::builder(&token).event_handler(Handler).await?; client.start().await?;
Errors
Returns an Error::Io
when there is a problem reading the contents
of the HTTP response.
Returns an Error::Http
when there is a problem retrieving the
attachment.
Trait Implementations
impl Clone for Attachment
[src]
fn clone(&self) -> Attachment
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for Attachment
[src]
impl<'de> Deserialize<'de> for Attachment
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
impl Serialize for Attachment
[src]
Auto Trait Implementations
impl RefUnwindSafe for Attachment
impl Send for Attachment
impl Sync for Attachment
impl Unpin for Attachment
impl UnwindSafe for Attachment
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,