[][src]Type Definition serenity_utils::menu::ControlFunction

type ControlFunction = Arc<dyn Fn(&'b mut Menu<'_>, Reaction) -> Pin<Box<dyn Future<Output = ()> + Send + 'b>> + Sync + Send>;

A function used to control the behaviour of a reaction menu's reaction.

An example implementation is provided here:

use serenity::model::channel::Reaction;
use serenity_utils::menu::Menu;

async fn first_page<'a>(menu: &mut Menu<'a>, reaction: Reaction) {
    // Remove the reaction used to change the menu.
    let _ = &reaction.delete(&menu.ctx.http).await;

    // Set page number to `0`.
    menu.options.page = 0;
}

Please note that the above function is not a ControlFunction. To make it a control function, you need to pin it and then create an Arc of it.

use std::sync::Arc;

let control_function = Arc::new(|m, r| Box::pin(first_page(m, r)));

Now, control_function can be used to control a menu.