mutiny_rs/context/
messages.rs1use 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}