feat: recent_mentions endpoints
Adds GET /users/@me/mentions and DELETE /users/@me/mentions/{message.id}
This commit is contained in:
parent
fa70c55944
commit
9d847906be
|
@ -13,8 +13,8 @@ use crate::{
|
|||
ratelimiter::ChorusRequest,
|
||||
types::{
|
||||
DeleteDisableUserSchema, GetPomeloEligibilityReturn, GetPomeloSuggestionsReturn,
|
||||
GetUserProfileSchema, LimitType, PublicUser, Snowflake, User, UserModifyProfileSchema,
|
||||
UserModifySchema, UserProfile, UserProfileMetadata, UserSettings,
|
||||
GetRecentMentionsSchema, GetUserProfileSchema, LimitType, PublicUser, Snowflake, User,
|
||||
UserModifyProfileSchema, UserModifySchema, UserProfile, UserProfileMetadata, UserSettings,
|
||||
VerifyUserEmailChangeResponse, VerifyUserEmailChangeSchema,
|
||||
},
|
||||
};
|
||||
|
@ -358,6 +358,58 @@ impl ChorusUser {
|
|||
|
||||
ChorusResult::Err(result.err().unwrap())
|
||||
}
|
||||
|
||||
/// Fetches a list of [Message](crate::types::Message)s that the current user has been
|
||||
/// mentioned in during the last 7 days.
|
||||
///
|
||||
/// As of 2024/08/09, Spacebar does not yet implement this endpoint.
|
||||
///
|
||||
/// See <https://docs.discord.sex/resources/user#get-recent-mentions>
|
||||
pub async fn get_recent_mentions(
|
||||
&mut self,
|
||||
query_parameters: GetRecentMentionsSchema,
|
||||
) -> ChorusResult<Vec<crate::types::Message>> {
|
||||
let request = Client::new()
|
||||
.get(format!(
|
||||
"{}/users/@me/mentions",
|
||||
self.belongs_to.read().unwrap().urls.api
|
||||
))
|
||||
.header("Authorization", self.token())
|
||||
.query(&query_parameters);
|
||||
|
||||
let chorus_request = ChorusRequest {
|
||||
request,
|
||||
limit_type: LimitType::default(),
|
||||
};
|
||||
|
||||
chorus_request
|
||||
.deserialize_response::<Vec<crate::types::Message>>(self)
|
||||
.await
|
||||
}
|
||||
|
||||
/// Acknowledges a message the current user has been mentioned in.
|
||||
///
|
||||
/// Fires a RecentMentionDelete gateway event. (Note: yet to be implemented in chorus, see [#545](https://github.com/polyphony-chat/chorus/issues/545))
|
||||
///
|
||||
/// As of 2024/08/09, Spacebar does not yet implement this endpoint.
|
||||
///
|
||||
/// See <https://docs.discord.sex/resources/user#delete-recent-mention>
|
||||
pub async fn delete_recent_mention(&mut self, message_id: Snowflake) -> ChorusResult<()> {
|
||||
let request = Client::new()
|
||||
.delete(format!(
|
||||
"{}/users/@me/mentions/{}",
|
||||
self.belongs_to.read().unwrap().urls.api,
|
||||
message_id
|
||||
))
|
||||
.header("Authorization", self.token());
|
||||
|
||||
let chorus_request = ChorusRequest {
|
||||
request,
|
||||
limit_type: LimitType::default(),
|
||||
};
|
||||
|
||||
chorus_request.handle_request_as_result(self).await
|
||||
}
|
||||
}
|
||||
|
||||
impl User {
|
||||
|
|
|
@ -228,3 +228,32 @@ pub(crate) struct GetPomeloSuggestionsReturn {
|
|||
pub(crate) struct GetPomeloEligibilityReturn {
|
||||
pub taken: bool
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Deserialize, Serialize, Clone, Copy, PartialEq, Eq)]
|
||||
/// Query string parameters for the route GET /users/@me/mentions
|
||||
/// ([crate::instance::ChorusUser::get_recent_mentions])
|
||||
///
|
||||
/// See <https://docs.discord.sex/resources/user#get-recent-mentions>
|
||||
pub struct GetRecentMentionsSchema {
|
||||
/// Only fetch messages before this message id
|
||||
///
|
||||
/// Due to the nature of snowflakes, this can be easily used to fetch
|
||||
/// messages before a certain timestamp
|
||||
pub before: Option<Snowflake>,
|
||||
/// Max number of messages to return
|
||||
///
|
||||
/// Should be between 1 and 100.
|
||||
///
|
||||
/// If unset the limit is 25 messages
|
||||
pub limit: Option<u8>,
|
||||
/// Limit messages to a specific guild
|
||||
pub guild_id: Option<Snowflake>,
|
||||
/// Whether to include role mentions.
|
||||
///
|
||||
/// If unset the server assumes true
|
||||
pub roles: Option<bool>,
|
||||
/// Whether to include @everyone and @here mentions.
|
||||
///
|
||||
/// If unset the server assumes true
|
||||
pub everyone: Option<bool>,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue