use super::*;
client_api! {
action: GetGuildChannels,
api_fn: get_guild_channels,
service: chat,
}
#[into_request("GetChannelMessagesRequest")]
#[derive(Debug, new, SelfBuilder)]
pub struct GetChannelMessages {
guild_id: u64,
channel_id: u64,
#[new(default)]
before_message: u64,
}
client_api! {
action: GetChannelMessages,
api_fn: get_channel_messages,
service: chat,
}
#[derive(Debug, new, SelfBuilder)]
pub struct CreateChannel {
guild_id: u64,
channel_name: String,
channel_place: Place,
#[new(default)]
#[builder(setter(strip_option))]
metadata: Option<Metadata>,
#[new(default)]
is_category: bool,
}
impl IntoRequest<CreateChannelRequest> for CreateChannel {
fn into_request(self) -> Request<CreateChannelRequest> {
CreateChannelRequest {
guild_id: self.guild_id,
channel_name: self.channel_name,
previous_id: self.channel_place.previous(),
next_id: self.channel_place.next(),
metadata: self.metadata,
is_category: self.is_category,
}
.into_request()
}
}
client_api! {
action: CreateChannel,
api_fn: create_channel,
service: chat,
}
#[into_request("DeleteChannelRequest")]
#[derive(Debug, new)]
pub struct DeleteChannel {
guild_id: u64,
channel_id: u64,
}
client_api! {
request: DeleteChannelRequest,
api_fn: delete_channel,
service: chat,
}
#[into_request("UpdateChannelInformationRequest")]
#[derive(Debug, new)]
pub struct UpdateChannelInformation {
guild_id: u64,
channel_id: u64,
#[new(default)]
name: String,
#[new(default)]
metadata: Option<Metadata>,
#[new(default)]
update_name: bool,
#[new(default)]
update_metadata: bool,
}
impl UpdateChannelInformation {
pub fn new_channel_name(mut self, channel_name: impl Into<String>) -> Self {
self.name = channel_name.into();
self.update_name = true;
self
}
pub fn new_metadata(mut self, metadata: impl Into<Option<Metadata>>) -> Self {
self.metadata = metadata.into();
self.update_metadata = true;
self
}
}
client_api! {
request: UpdateChannelInformationRequest,
api_fn: update_channel_information,
service: chat,
}
#[derive(Debug, new)]
pub struct UpdateChannelOrder {
guild_id: u64,
channel_id: u64,
new_channel_place: Place,
}
impl IntoRequest<UpdateChannelOrderRequest> for UpdateChannelOrder {
fn into_request(self) -> Request<UpdateChannelOrderRequest> {
UpdateChannelOrderRequest {
guild_id: self.guild_id,
channel_id: self.channel_id,
previous_id: self.new_channel_place.previous(),
next_id: self.new_channel_place.next(),
}
.into_request()
}
}
client_api! {
request: UpdateChannelOrderRequest,
api_fn: update_channel_order,
service: chat,
}