Add InteractionRunner to on_interaction_handlers

This commit is contained in:
2025-08-12 23:15:52 -03:00
parent 0cdbe63c55
commit 09b875da97
2 changed files with 11 additions and 15 deletions
+3 -3
View File
@@ -7,13 +7,13 @@ use twilight_http::Client;
use crate::{
framework::{
commands::{Command, runner::CommandRunner},
commands::{runner::CommandRunner, Command},
events::traits::{
OnInteractionHandler, OnMessageDeleteHandler, OnMessageEditHandler, OnMessageHandler,
OnReadyHandler, OnReconnectHandler, OnServerCreateHandler, OnServerDeleteHandler,
OnServerUpdateHandler,
},
interactions::{components::Component, registry::ComponentRegistry},
interactions::{components::Component, registry::ComponentRegistry, runner::InteractionRunner},
runtime::Runtime,
},
utils::Bye,
@@ -97,7 +97,7 @@ impl<T: 'static + Send + Sync> Bot<T> {
components: Vec::new(),
on_ready_handlers: Vec::new(),
on_reconnect_handlers: Vec::new(),
on_interaction_handlers: Vec::new(),
on_interaction_handlers: vec![Arc::new(InteractionRunner)],
on_message_handlers: vec![Arc::new(CommandRunner)],
on_message_edit_handlers: Vec::new(),
on_message_delete_handlers: Vec::new(),
+8 -12
View File
@@ -3,24 +3,20 @@ use std::sync::Arc;
use async_trait::async_trait;
use twilight_model::gateway::payload::incoming::InteractionCreate;
use crate::{
framework::{
events::traits::{EventResult, OnInteractionHandler},
runtime::Runtime,
},
state::State,
use crate::framework::{
events::traits::{EventResult, OnInteractionHandler},
runtime::Runtime,
};
#[derive(Debug)]
pub struct InteractionRunner;
#[async_trait]
impl OnInteractionHandler<State> for InteractionRunner {
async fn on_interaction(
&self,
event: &InteractionCreate,
rt: Arc<Runtime<State>>,
) -> EventResult {
impl<T> OnInteractionHandler<T> for InteractionRunner
where
T: Send + Sync + 'static,
{
async fn on_interaction(&self, event: &InteractionCreate, rt: Arc<Runtime<T>>) -> EventResult {
Ok(rt.registry.execute(event, rt.clone()).await?)
}
}