1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
use twilight_model::{ channel::{ embed::Embed, message::{ Message, MessageActivity, MessageApplication, MessageFlags, MessageReaction, MessageReference, MessageType, }, Attachment, ChannelMention, }, guild::PartialMember, id::{ChannelId, GuildId, MessageId, RoleId, UserId, WebhookId}, }; #[derive(Clone, Debug, Eq, PartialEq)] pub struct CachedMessage { pub id: MessageId, pub activity: Option<MessageActivity>, pub application: Option<MessageApplication>, pub attachments: Vec<Attachment>, pub author: UserId, pub channel_id: ChannelId, pub content: String, pub edited_timestamp: Option<String>, pub embeds: Vec<Embed>, pub flags: Option<MessageFlags>, pub guild_id: Option<GuildId>, pub kind: MessageType, pub member: Option<PartialMember>, pub mention_channels: Vec<ChannelMention>, pub mention_everyone: bool, pub mention_roles: Vec<RoleId>, pub mentions: Vec<UserId>, pub pinned: bool, pub reactions: Vec<MessageReaction>, pub reference: Option<MessageReference>, pub timestamp: String, pub tts: bool, pub webhook_id: Option<WebhookId>, } impl From<Message> for CachedMessage { fn from(msg: Message) -> Self { Self { id: msg.id, activity: msg.activity, application: msg.application, attachments: msg.attachments, author: msg.author.id, channel_id: msg.channel_id, content: msg.content, edited_timestamp: msg.edited_timestamp, embeds: msg.embeds, flags: msg.flags, guild_id: msg.guild_id, kind: msg.kind, member: msg.member, mention_channels: msg.mention_channels, mention_everyone: msg.mention_everyone, mention_roles: msg.mention_roles, mentions: msg.mentions.keys().copied().collect(), pinned: msg.pinned, reactions: msg.reactions, reference: msg.reference, timestamp: msg.timestamp, tts: msg.tts, webhook_id: msg.webhook_id, } } }