From fbb87fe58aa0d30fc91e369d65117cf19a3ef7c5 Mon Sep 17 00:00:00 2001 From: trivernis Date: Sat, 17 Apr 2021 15:43:03 +0200 Subject: [PATCH] Change order of help entries to correspond to button ordering Signed-off-by: trivernis --- bot-serenityutils/src/menu/controls.rs | 12 ++++++++++-- bot-serenityutils/src/menu/menu.rs | 5 +++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/bot-serenityutils/src/menu/controls.rs b/bot-serenityutils/src/menu/controls.rs index 37aac16..a69c2ee 100644 --- a/bot-serenityutils/src/menu/controls.rs +++ b/bot-serenityutils/src/menu/controls.rs @@ -2,6 +2,7 @@ use crate::error::{SerenityUtilsError, SerenityUtilsResult}; use crate::menu::container::get_listeners_from_context; use crate::menu::menu::Menu; use crate::menu::typedata::HelpActiveContainer; +use crate::menu::ActionContainer; use serde_json::json; use serde_json::Value; use serenity::client::Context; @@ -75,12 +76,19 @@ pub async fn toggle_help( .get() .await?; let mut message = menu.get_message(ctx.http()).await?; - let help_message = menu + log::debug!("Building help entries"); + let mut help_entries = menu .help_entries .iter() - .map(|(e, h)| format!(" - {} {}", e, h)) + .filter_map(|(e, h)| Some((menu.controls.get(e)?, e, h))) + .collect::>(); + help_entries.sort_by_key(|(c, _, _)| c.position()); + let help_message = help_entries + .into_iter() + .map(|(_, e, h)| format!(" - {} {}", e, h)) .collect::>() .join("\n"); + log::trace!("Help message is {}", help_message); message .edit(ctx, |m| { diff --git a/bot-serenityutils/src/menu/menu.rs b/bot-serenityutils/src/menu/menu.rs index 787d555..24fd310 100644 --- a/bot-serenityutils/src/menu/menu.rs +++ b/bot-serenityutils/src/menu/menu.rs @@ -64,6 +64,11 @@ impl ActionContainer { self.inner.clone()(ctx, menu, reaction).await?; Ok(()) } + + /// Returns the position of the action + pub fn position(&self) -> isize { + self.position + } } /// A menu message