mutiny_rs/context/
messages.rs

1use crate::context::Context;
2use crate::model::message::Message;
3use crate::http::HttpError;
4
5impl Context {
6    pub async fn fetch_message(&self, channel_id: &str, message_id: &str, force: bool) -> Result<Message, HttpError> {
7        if !force {
8            if let Some(cached) = self.cache.messages.get(message_id).await {
9                return Ok(cached);
10            }
11        }
12
13        let message = self.http.fetch_message(channel_id, message_id).await?;
14
15        self.cache.messages.insert(message.id.clone(), message.clone()).await;
16
17        Ok(message)
18    }
19
20    pub async fn delete_message(&self, channel_id: &str, message_id: &str) -> Result<(), HttpError> {
21        self.http.delete_message(channel_id, message_id).await?;
22
23        self.cache.messages.invalidate(message_id).await;
24
25        Ok(())
26    }
27    pub async fn delete_messages_bulk(&self, channel_id: &str, message_ids: Vec<String>) -> Result<(), HttpError> {
28        self.http.delete_messages_bulk(channel_id, message_ids.clone()).await?;
29        self.cache.remove_messages(message_ids).await;
30        Ok(())
31    }
32}