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
use crate::error::Result;
use serenity::client::Context;
use serenity::http::Http;
use serenity::{async_trait, model::prelude::*};

#[async_trait]
pub trait EventDrivenMessage: Send + Sync {
    /// Returns if a message has been frozen and won't handle any further events
    fn is_frozen(&self) -> bool {
        false
    }

    /// Fired periodically
    async fn update(&mut self, _http: &Http) -> Result<()> {
        Ok(())
    }

    /// Fired when the message was deleted
    async fn on_deleted(&mut self, _ctx: &Context) -> Result<()> {
        Ok(())
    }

    /// Fired when a reaction was added to the message
    async fn on_reaction_add(&mut self, _ctx: &Context, _reaction: Reaction) -> Result<()> {
        Ok(())
    }

    /// Fired when a reaction was removed from the message
    async fn on_reaction_remove(&mut self, _ctx: &Context, _reaction: Reaction) -> Result<()> {
        Ok(())
    }
}