Add create reaction with documentation

This commit is contained in:
bitfl0wer 2023-06-03 22:07:37 +02:00
parent 33e0f75772
commit 065bb28c96
1 changed files with 51 additions and 1 deletions

View File

@ -1,6 +1,10 @@
use reqwest::Client; use reqwest::Client;
use crate::{instance::UserMeta, limit::LimitedRequester, types}; use crate::{
instance::UserMeta,
limit::LimitedRequester,
types::{self, Snowflake},
};
/** /**
Extends the [`types::Reaction`] struct with useful metadata. Extends the [`types::Reaction`] struct with useful metadata.
@ -118,4 +122,50 @@ impl ReactionMeta {
) )
.await .await
} }
/*
Create a reaction for the message.
This endpoint requires the READ_MESSAGE_HISTORY permission
to be present on the current user. Additionally, if nobody else has reacted to the message using
this emoji, this endpoint requires the ADD_REACTIONS permission to be present on the current
user. Returns a 204 empty response on success. Fires a Message Reaction Add Gateway event.
# Arguments
* `emoji` - A string slice containing the emoji to delete. The `emoji` must be URL Encoded or
the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the
format name:id with the emoji name and emoji id.
* `user` - A mutable reference to a [`UserMeta`] instance.
# Returns
A `Result` containing a [`reqwest::Response`] or a [`crate::errors::InstanceServerError`].
# Reference
See https://discord.com/developers/docs/resources/channel#create-reaction
*/
pub async fn create(
channel_id: &Snowflake,
message_id: &Snowflake,
emoji: &str,
user: &mut UserMeta,
) -> Result<reqwest::Response, crate::errors::InstanceServerError> {
let mut belongs_to = user.belongs_to.borrow_mut();
let url = format!(
"{}/channels/{}/messages/{}/reactions/{}/@me/",
belongs_to.urls.get_api(),
channel_id,
message_id,
emoji
);
let request = Client::new().put(url).bearer_auth(user.token());
LimitedRequester::new()
.await
.send_request(
request,
crate::api::limits::LimitType::Channel,
&mut belongs_to.limits,
&mut user.limits,
)
.await
}
} }