use super::register::Module;
use crate::agent::agents::Agent;
use async_trait::async_trait;
use clap::ArgMatches;
use colored::Colorize;
pub struct MessageConfig {
pub connection_id: String,
pub message: String,
}
pub struct MessagesModule;
#[async_trait(?Send)]
impl Module<MessageConfig> for MessagesModule {
async fn run(agent: &dyn Agent, config: MessageConfig) {
agent.send_message(&config).await;
agent.logger().log(&format!(
"Sent \"{}\" to {}!",
config.message.bright_purple(),
config.connection_id.cyan()
));
}
async fn register<'a>(agent: &dyn Agent, matches: &ArgMatches<'a>) {
if let Some(matches_connections) = matches.subcommand_matches("message") {
let connection_id = matches_connections
.value_of("connection-id")
.unwrap()
.to_string();
let message = matches_connections.value_of("message").unwrap().to_string();
let config = MessageConfig {
connection_id,
message,
};
MessagesModule::run(agent, config).await;
}
}
}