use iso8601_timestamp::Timestamp; use std::collections::HashSet; auto_derived!( /// Options for searching messages in a server or channel pub struct DataChannelMessagesSearch { /// Channel to search in pub channel: Option, /// Server to search in pub server: Option, /// Filter options pub filters: Option, /// What index to start the search at pub offset: Option, /// Max amount of messages to return pub limit: Option, /// Sort order pub sort: Option, } /// Message search filters pub struct DataChannelMessagesSearchFilters { /// Message content pub content: Option, /// Specific user pub author: Option>, /// Mentions a user pub mentions: Option>, /// Mentions a role pub role_mentions: Option>, /// Send before a specific date pub before_date: Option, /// Sent after a specific date pub after_date: Option, /// What type of user sent the message pub author_type: Option>, /// Whether the message is pinned or not pub pinned: Option, /// Require message to have a specific component type pub components: Option>, } /// Message author type #[derive(Copy, Hash)] pub enum AuthorType { User, Bot, Webhook, } /// Message component #[derive(Copy, Hash)] pub enum MessageComponent { Image, Video, Link, File, Embed, } /// Message sort order #[derive(Copy, Default)] #[cfg_attr(feature = "serde", serde(rename_all = "lowercase"))] pub enum SortOrder { Asc, #[default] Desc, } );