Create Greet Message

This commit is contained in:
bitfl0wer 2023-08-22 21:55:24 +02:00
parent f7d3e53a91
commit d751c92778
3 changed files with 35 additions and 4 deletions

View File

@ -8,7 +8,8 @@ use crate::errors::{ChorusError, ChorusResult};
use crate::instance::UserMeta; use crate::instance::UserMeta;
use crate::ratelimiter::ChorusRequest; use crate::ratelimiter::ChorusRequest;
use crate::types::{ use crate::types::{
Channel, Message, MessageSearchEndpoint, MessageSearchQuery, MessageSendSchema, Snowflake, Channel, CreateGreetMessage, Message, MessageSearchEndpoint, MessageSearchQuery,
MessageSendSchema, Snowflake,
}; };
impl Message { impl Message {
@ -224,6 +225,29 @@ impl Message {
}; };
chorus_request.deserialize_response::<Message>(user).await chorus_request.deserialize_response::<Message>(user).await
} }
/// Posts a greet message to a channel. This endpoint requires the channel is a DM channel or you reply to a system message.
/// # Reference:
/// See: <https://discord-userdoccers.vercel.app/resources/message#create-greet-message>
pub async fn create_greet(
channel_id: Snowflake,
schema: CreateGreetMessage,
user: &mut UserMeta,
) -> ChorusResult<Message> {
let chorus_request = ChorusRequest {
request: Client::new()
.post(format!(
"{}/channels/{}/messages/greet",
user.belongs_to.borrow().urls.api,
channel_id,
))
.header("Authorization", user.token())
.header("Content-Type", "application/json")
.body(to_string(&schema).unwrap()),
limit_type: LimitType::Channel(channel_id),
};
chorus_request.deserialize_response::<Message>(user).await
}
} }
fn search_error(result_text: String) -> ChorusError { fn search_error(result_text: String) -> ChorusError {

View File

@ -104,7 +104,7 @@ impl PartialEq for Message {
} }
} }
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Ord, PartialOrd)]
/// # Reference /// # Reference
/// See <https://discord-userdoccers.vercel.app/resources/message#message-reference-object> /// See <https://discord-userdoccers.vercel.app/resources/message#message-reference-object>
pub struct MessageReference { pub struct MessageReference {
@ -124,7 +124,7 @@ pub struct MessageInteraction {
pub member: Option<Arc<RwLock<GuildMember>>>, pub member: Option<Arc<RwLock<GuildMember>>>,
} }
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, PartialOrd, Ord)]
pub struct AllowedMention { pub struct AllowedMention {
parse: Vec<AllowedMentionType>, parse: Vec<AllowedMentionType>,
roles: Vec<Snowflake>, roles: Vec<Snowflake>,
@ -132,7 +132,7 @@ pub struct AllowedMention {
replied_user: bool, replied_user: bool,
} }
#[derive(Debug, PartialEq, Clone, Copy, Serialize, Deserialize)] #[derive(Debug, PartialEq, Clone, Copy, Serialize, Deserialize, Eq, PartialOrd, Ord)]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
pub enum AllowedMentionType { pub enum AllowedMentionType {
Roles, Roles,

View File

@ -96,3 +96,10 @@ impl std::default::Default for MessageSearchQuery {
} }
} }
} }
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct CreateGreetMessage {
pub sticker_ids: Vec<Snowflake>,
pub allowed_mentions: Option<AllowedMention>,
pub message_reference: Option<MessageReference>,
}