Skip to content

Commit f04f3ba

Browse files
committed
Relay join and leave messages
1 parent 2e24384 commit f04f3ba

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

src/pterodactyl/smp_commands.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,26 @@ async fn handle_chat_message<H: PteroWebSocketHandle>(
124124
Ok(())
125125
}
126126

127+
async fn handle_log_message(
128+
data: &ProtobotData,
129+
chat_bridge_webhook: Option<&Webhook>,
130+
message: &str,
131+
) -> Result<(), crate::Error> {
132+
if let Some(chat_bridge_webhook) = chat_bridge_webhook {
133+
if message.ends_with(" joined the game") || message.ends_with(" left the game") {
134+
chat_bridge_webhook
135+
.execute(
136+
&data.discord_handle,
137+
false,
138+
ExecuteWebhook::new().content(message).username("System"),
139+
)
140+
.await?;
141+
}
142+
}
143+
144+
Ok(())
145+
}
146+
127147
async fn handle_server_log<H: PteroWebSocketHandle>(
128148
handle: &mut H,
129149
data: &ProtobotData,
@@ -159,6 +179,27 @@ async fn handle_server_log<H: PteroWebSocketHandle>(
159179
message,
160180
)
161181
.await?;
182+
return Ok(());
183+
}
184+
185+
let parse_result: Result<(&str, &str), nom::error::Error<&str>> = map(
186+
tuple((
187+
tuple((
188+
char('['),
189+
digit1,
190+
char(':'),
191+
digit1,
192+
char(':'),
193+
digit1,
194+
tag("] [Server thread/INFO]: "),
195+
)),
196+
recognize(many1(anychar)),
197+
)),
198+
|(_, log_message)| log_message,
199+
)(message)
200+
.finish();
201+
if let Ok((_, log_message)) = parse_result {
202+
handle_log_message(data, chat_bridge_webhook, log_message).await?;
162203
}
163204

164205
Ok(())

0 commit comments

Comments
 (0)