[−][src]Struct serenity::model::channel::Attachment
A file uploaded with a message. Not to be confused with Embed
s.
Fields
id: String
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.
Methods
impl Attachment
[src]
impl Attachment
pub fn dimensions(&self) -> Option<(u64, u64)>
[src]
pub fn dimensions(&self) -> Option<(u64, u64)>
If this attachment is an image, then a tuple of the width and height in pixels is returned.
pub fn download(&self) -> Result<Vec<u8>>
[src]
pub fn download(&self) -> Result<Vec<u8>>
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 std::env; use std::fs::File; use std::io::Write; use std::path::Path; struct Handler; impl EventHandler for Handler { fn message(&self, _: Context, message: Message) { for attachment in message.attachments { let content = match attachment.download() { Ok(content) => content, Err(why) => { println!("Error downloading attachment: {:?}", why); let _ = message.channel_id.say("Error downloading attachment"); return; }, }; let mut file = match File::create(&attachment.filename) { Ok(file) => file, Err(why) => { println!("Error creating file: {:?}", why); let _ = message.channel_id.say("Error creating file"); return; }, }; if let Err(why) = file.write(&content) { println!("Error writing to file: {:?}", why); return; } let _ = message.channel_id.say(&format!("Saved {:?}", attachment.filename)); } } fn ready(&self, _: Context, ready: Ready) { println!("{} is connected!", ready.user.name); } } let token = env::var("DISCORD_TOKEN").expect("token in environment"); let mut client = Client::new(&token, Handler).unwrap(); client.start().unwrap();
Errors
Returns an Error::Io
when there is a problem reading the contents
of the HTTP response.
Returns an Error::Hyper
when there is a problem retrieving the
attachment.
Trait Implementations
impl Clone for Attachment
[src]
impl Clone for Attachment
fn clone(&self) -> Attachment
[src]
fn clone(&self) -> Attachment
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl Debug for Attachment
[src]
impl Debug for Attachment
fn fmt(&self, f: &mut Formatter) -> Result
[src]
fn fmt(&self, f: &mut Formatter) -> Result
Formats the value using the given formatter. Read more
impl Serialize for Attachment
[src]
impl Serialize for Attachment
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
[src]
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl<'de> Deserialize<'de> for Attachment
[src]
impl<'de> Deserialize<'de> for Attachment
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations
impl Send for Attachment
impl Send for Attachment
impl Sync for Attachment
impl Sync for Attachment
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
impl<T, U> Into for T where
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
type Owned = T
fn to_owned(&self) -> T
[src]
fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
fn clone_into(&self, target: &mut T)
[src]
fn clone_into(&self, target: &mut T)
🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<T> From for T
[src]
impl<T> From for T
impl<T, U> TryFrom for T where
T: From<U>,
[src]
impl<T, U> TryFrom for T where
T: From<U>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
try_from
)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized,
[src]
impl<T> Borrow for T where
T: ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
impl<T> BorrowMut for T where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
try_from
)Performs the conversion.
impl<T> Any for T where
T: 'static + ?Sized,
[src]
impl<T> Any for T where
T: 'static + ?Sized,
fn get_type_id(&self) -> TypeId
[src]
fn get_type_id(&self) -> TypeId
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Gets the TypeId
of self
. Read more
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
[src]
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
impl<T> Erased for T
impl<T> Erased for T
impl<T> Typeable for T where
T: Any,
impl<T> Typeable for T where
T: Any,
impl<T> DebugAny for T where
T: Any + Debug,
[src]
impl<T> DebugAny for T where
T: Any + Debug,
impl<T> CloneAny for T where
T: Clone + Any,
[src]
impl<T> CloneAny for T where
T: Clone + Any,
fn clone_any(&self) -> Box<dyn CloneAny + 'static>
[src]
fn clone_any(&self) -> Box<dyn CloneAny + 'static>
fn clone_any_send(&self) -> Box<dyn CloneAny + 'static + Send> where
T: Send,
[src]
fn clone_any_send(&self) -> Box<dyn CloneAny + 'static + Send> where
T: Send,
fn clone_any_sync(&self) -> Box<dyn CloneAny + 'static + Sync> where
T: Sync,
[src]
fn clone_any_sync(&self) -> Box<dyn CloneAny + 'static + Sync> where
T: Sync,
fn clone_any_send_sync(&self) -> Box<dyn CloneAny + 'static + Sync + Send> where
T: Send + Sync,
[src]
fn clone_any_send_sync(&self) -> Box<dyn CloneAny + 'static + Sync + Send> where
T: Send + Sync,
impl<T> UnsafeAny for T where
T: Any,
impl<T> UnsafeAny for T where
T: Any,