add delete and bulk_delete endpoints
This commit is contained in:
parent
a8f37ea201
commit
a23363e0a3
|
@ -364,6 +364,62 @@ impl Message {
|
||||||
};
|
};
|
||||||
chorus_request.deserialize_response::<Message>(user).await
|
chorus_request.deserialize_response::<Message>(user).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Deletes a message. If operating on a guild channel and trying to delete a message that was not sent by the current user,
|
||||||
|
/// this endpoint requires the `MANAGE_MESSAGES` permission. Returns a 204 empty response on success.
|
||||||
|
pub async fn delete(
|
||||||
|
channel_id: Snowflake,
|
||||||
|
message_id: Snowflake,
|
||||||
|
user: &mut UserMeta,
|
||||||
|
) -> ChorusResult<()> {
|
||||||
|
let chorus_request = ChorusRequest {
|
||||||
|
request: Client::new()
|
||||||
|
.delete(format!(
|
||||||
|
"{}/channels/{}/messages/{}",
|
||||||
|
user.belongs_to.borrow().urls.api,
|
||||||
|
channel_id,
|
||||||
|
message_id
|
||||||
|
))
|
||||||
|
.header("Authorization", user.token())
|
||||||
|
.header("Content-Type", "application/json"),
|
||||||
|
limit_type: LimitType::Channel(channel_id),
|
||||||
|
};
|
||||||
|
chorus_request.handle_request_as_result(user).await
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Deletes multiple messages in a single request. This endpoint can only be used on guild channels and requires the MANAGE_MESSAGES permission.
|
||||||
|
/// Returns a 204 empty response on success.
|
||||||
|
///
|
||||||
|
/// **This endpoint will not delete messages older than 2 weeks, and will fail if any message provided is older than that or if any duplicate message IDs are provided.**
|
||||||
|
///
|
||||||
|
/// **This endpoint is not usable by user accounts.** (At least according to Discord.com. Spacebar behaviour may differ.)
|
||||||
|
///
|
||||||
|
/// # Reference:
|
||||||
|
/// See: <https://discord-userdoccers.vercel.app/resources/message#bulk-delete-messages>
|
||||||
|
pub async fn bulk_delete(
|
||||||
|
channel_id: Snowflake,
|
||||||
|
messages: Vec<Snowflake>,
|
||||||
|
user: &mut UserMeta,
|
||||||
|
) -> ChorusResult<()> {
|
||||||
|
if messages.len() < 2 {
|
||||||
|
return Err(ChorusError::InvalidArguments {
|
||||||
|
error: "`messages` must contain at least 2 entries.".to_string(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
let chorus_request = ChorusRequest {
|
||||||
|
request: Client::new()
|
||||||
|
.post(format!(
|
||||||
|
"{}/channels/{}/messages/bulk-delete",
|
||||||
|
user.belongs_to.borrow().urls.api,
|
||||||
|
channel_id,
|
||||||
|
))
|
||||||
|
.header("Authorization", user.token())
|
||||||
|
.header("Content-Type", "application/json")
|
||||||
|
.body(to_string(&messages).unwrap()),
|
||||||
|
limit_type: LimitType::Channel(channel_id),
|
||||||
|
};
|
||||||
|
chorus_request.handle_request_as_result(user).await
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn search_error(result_text: String) -> ChorusError {
|
fn search_error(result_text: String) -> ChorusError {
|
||||||
|
|
Loading…
Reference in New Issue