Add support for extras, conditionally displaying commands in the help command, and start working on moderation commands

This commit is contained in:
2025-08-22 18:06:52 -03:00
parent 55ae1c8937
commit 8868b18be3
41 changed files with 1075 additions and 368 deletions
+11 -7
View File
@@ -1,6 +1,7 @@
use async_trait::async_trait;
use crate::{
extras::Extras,
framework::interactions::{InteractionError, components::Button, context::InteractionContext},
groups::about::embeds::get_all_command_help_embed,
state::State,
@@ -10,19 +11,22 @@ use crate::{
pub struct HelpGoBackButton;
#[async_trait]
impl Button<State> for HelpGoBackButton {
impl Button<State, Extras> for HelpGoBackButton {
fn label(&self) -> Option<&'static str> {
Some("← Go back to commands list")
}
async fn on_press(&self, ctx: InteractionContext<State>) -> Result<(), InteractionError> {
async fn on_press(
&self,
ctx: InteractionContext<State, Extras>,
) -> Result<(), InteractionError> {
ctx
.original_message()
.expect(
"Buttons always have the original message in the interaction context, this one didn't (got None)"
)
.edit()
.embed(get_all_command_help_embed(&ctx.prefix, ctx.rt))
.embed(get_all_command_help_embed(&ctx.prefix, &ctx.rt, &ctx.extras))
.component(HelpWebsiteLinkButton, 1)
.component(HelpSupportLinkButton, 1)
.component(HelpDonateLinkButton, 1)
@@ -41,7 +45,7 @@ impl Button<State> for HelpGoBackButton {
pub struct HelpSupportLinkButton;
#[async_trait]
impl Button<State> for HelpSupportLinkButton {
impl Button<State, Extras> for HelpSupportLinkButton {
fn label(&self) -> Option<&'static str> {
Some("Get help")
}
@@ -55,7 +59,7 @@ impl Button<State> for HelpSupportLinkButton {
pub struct HelpWebsiteLinkButton;
#[async_trait]
impl Button<State> for HelpWebsiteLinkButton {
impl Button<State, Extras> for HelpWebsiteLinkButton {
fn label(&self) -> Option<&'static str> {
Some("Website")
}
@@ -69,7 +73,7 @@ impl Button<State> for HelpWebsiteLinkButton {
pub struct HelpDonateLinkButton;
#[async_trait]
impl Button<State> for HelpDonateLinkButton {
impl Button<State, Extras> for HelpDonateLinkButton {
fn label(&self) -> Option<&'static str> {
Some("Donate")
}
@@ -83,7 +87,7 @@ impl Button<State> for HelpDonateLinkButton {
pub struct CodeOfConductLinkButton;
#[async_trait]
impl Button<State> for CodeOfConductLinkButton {
impl Button<State, Extras> for CodeOfConductLinkButton {
fn label(&self) -> Option<&'static str> {
Some("Code of Conduct")
}