automate 0.4.0

An asynchronous library to interact with Discord API and make bots
use crate::gateway::{Overwrite, OverwriteType, ChannelType};
use crate::Snowflake;

#[object(client)]
pub struct NewChannel {
    pub parent_id: Option<u64>,
    pub name: String,
    pub _type: Option<ChannelType>,
    pub topic: Option<String>,
    pub bitrate: Option<i32>,
    pub position: Option<i32>,
    pub permission_overwrites: Option<Vec<Overwrite>>,
    pub nsfw: Option<bool>,
    pub user_limit: Option<i32>,
    pub rate_limit_per_user: Option<i32>,
}

#[object(client)]
pub struct ModifyChannel {
    pub name: Option<String>,
    pub position: Option<i32>,
    pub topic: Option<String>,
    pub nsfw: Option<bool>,
    pub rate_limit_per_user: Option<i32>,
    pub bitrate: Option<i32>,
    pub user_limit: Option<i32>,
    pub permission_overwrites: Option<Vec<Overwrite>>,
    pub parent_id: Option<Snowflake>,
}

#[object(client)]
pub struct MoveChannel {
    pub id: u64,
    pub position: i32
}

pub enum MessagesPosition {
    Default,
    Limit(i32),
    Before(Snowflake, i32),
    Around(Snowflake, i32),
    After(Snowflake, i32)
}

pub enum ReactionsPosition {
    Default,
    Limit(i32),
    Before(Snowflake, i32),
    After(Snowflake, i32)
}

#[object(client)]
pub struct NewOverwrite {
    pub _type: OverwriteType,
    pub allow: u32,
    pub deny: u32
}

#[object(client)]
pub struct NewInvite {
    pub max_age: i32,
    pub max_uses: i32,
    pub temporary: bool,
    pub unique: bool
}