diff --git a/src/events.rs b/src/events.rs
index 6e26b76..8797f33 100644
--- a/src/events.rs
+++ b/src/events.rs
@@ -23,10 +23,13 @@ pub async fn handle_event(client: Client, event: Event, state: State) -> anyhow:
Event::Chat(message) => {
let globals = state.lua.globals();
let (sender, mut content) = message.split_sender_and_content();
- let formatted_message = message.message();
- info!("{}", formatted_message.to_ansi());
+ let uuid = message.uuid().map(|uuid| uuid.to_string());
+ let is_whisper = message.is_whisper();
+ let text = message.message();
+ let ansi_text = text.to_ansi();
+ info!("{ansi_text}");
- if let Some(sender) = sender {
+ if let Some(ref sender) = sender {
let mut ncr_options = None;
if let Ok(options) = globals.get::
("NcrOptions")
&& let Ok(decrypt) = globals.get::("ncr_decrypt")
@@ -41,9 +44,9 @@ pub async fn handle_event(client: Client, event: Event, state: State) -> anyhow:
info!("decrypted message from {sender}: {content}");
}
- if message.is_whisper() && globals.get::>("Owners")?.contains(&sender) {
+ if is_whisper && globals.get::>("Owners")?.contains(sender) {
if let Err(error) = state.commands.execute(
- content,
+ content.clone(),
CommandSource {
client: client.clone(),
message: message.clone(),
@@ -63,7 +66,14 @@ pub async fn handle_event(client: Client, event: Event, state: State) -> anyhow:
}
}
- call_listeners(&state, "chat", formatted_message.to_string()).await;
+ let table = state.lua.create_table()?;
+ table.set("text", text.to_string())?;
+ table.set("ansi_text", ansi_text)?;
+ table.set("sender", sender)?;
+ table.set("content", content)?;
+ table.set("uuid", uuid)?;
+ table.set("is_whisper", is_whisper)?;
+ call_listeners(&state, "chat", table).await;
}
Event::Death(packet) => {
if let Some(packet) = packet {