Add poke to client messaging
All checks were successful
/ build-upload (push) Successful in 1m37s

This commit is contained in:
Tobias Reisinger 2025-10-25 19:06:15 +02:00
parent b753bb235d
commit 71ab3b52ec
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
8 changed files with 36 additions and 10 deletions

4
Cargo.lock generated
View file

@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo. # This file is automatically @generated by Cargo.
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3 version = 4
[[package]] [[package]]
name = "anstream" name = "anstream"
@ -182,7 +182,7 @@ dependencies = [
[[package]] [[package]]
name = "teamspeak-query-lib" name = "teamspeak-query-lib"
version = "0.2.0" version = "0.2.1"
dependencies = [ dependencies = [
"clap", "clap",
"serde", "serde",

View file

@ -1,6 +1,6 @@
[package] [package]
name = "teamspeak-query-lib" name = "teamspeak-query-lib"
version = "0.2.0" version = "0.2.1"
edition = "2021" edition = "2021"
[dependencies] [dependencies]

View file

@ -50,6 +50,8 @@ commands:
required: false required: false
- name: message - name: message
required: false required: false
flags:
- long: --poke
- name: events - name: events
- name: events-ntfy - name: events-ntfy
environment_variables: environment_variables:

View file

@ -1,3 +1,10 @@
client=$(_ts_control_get_entity client "${args[client]}") client=$(_ts_control_get_entity client "${args[client]}")
message=$(_ts_control_get_message "${args[message]}") message=$(_ts_control_get_message "${args[message]}")
teamspeak-query-lib message --strict-client --client "$client" "$message"
if [ "${args[--poke]:-0}" -gt 0 ]; then
echo "Sending poke to client $client: $message"
teamspeak-query-lib message --strict-client --poke --client "$client" "$message"
else
echo "Sending message to client $client: $message"
teamspeak-query-lib message --strict-client --client "$client" "$message"
fi

View file

@ -63,6 +63,8 @@ pub struct MessageArgs {
client: Option<String>, client: Option<String>,
#[arg(long)] #[arg(long)]
server: bool, server: bool,
#[arg(long)]
pub poke: bool,
pub message: String, pub message: String,
} }
@ -199,4 +201,4 @@ impl UpdateArgs {
pub fn init() -> Commands { pub fn init() -> Commands {
Cli::parse().command Cli::parse().command
} }

View file

@ -114,6 +114,12 @@ pub fn sendtextmessage(connection: &mut Telnet, target: SendTextMessageTarget, m
send_command(connection, &format!("sendtextmessage {} {}", msg, String::from(target)), false) send_command(connection, &format!("sendtextmessage {} {}", msg, String::from(target)), false)
} }
pub fn clientpoke(connection: &mut Telnet, clid: i32, msg: String) -> Result<Response, String> {
let msg = parameter_to_string((String::from("msg"), msg));
let clid = parameter_to_string((String::from("clid"), clid.to_string()));
send_command(connection, &format!("clientpoke {} {}", msg, clid), false)
}
pub fn clientnotifyregister(connection: &mut Telnet, schandlerid: u32, event: EventType) -> Result<Response, String> { pub fn clientnotifyregister(connection: &mut Telnet, schandlerid: u32, event: EventType) -> Result<Response, String> {
send_command(connection, &format!("clientnotifyregister schandlerid={} event={}", schandlerid, String::from(&event)), false) send_command(connection, &format!("clientnotifyregister schandlerid={} event={}", schandlerid, String::from(&event)), false)
} }

View file

@ -139,7 +139,7 @@ fn main() -> Result<(), Error> {
let target = args.target(&mut connection) let target = args.target(&mut connection)
.map_err(|msg| make_action_error("message target", msg))?; .map_err(|msg| make_action_error("message target", msg))?;
match wrappers::send_text_message(&mut connection, target, args.message) { match wrappers::send_text_message(&mut connection, target, args.message, args.poke) {
Ok(_) => println!("Successfully sent message."), Ok(_) => println!("Successfully sent message."),
Err(msg) => { Err(msg) => {
return Err(make_action_error("send message", msg)); return Err(make_action_error("send message", msg));
@ -184,4 +184,4 @@ fn main() -> Result<(), Error> {
} }
} }
Ok(()) Ok(())
} }

View file

@ -166,6 +166,15 @@ pub fn update_client(connection: &mut Telnet, parameters: ParameterList) -> Resu
commands::clientupdate(connection, parameters) commands::clientupdate(connection, parameters)
} }
pub fn send_text_message(connection: &mut Telnet, target: SendTextMessageTarget, msg: String) -> Result<Response, String> { pub fn send_text_message(connection: &mut Telnet, target: SendTextMessageTarget, msg: String, poke: bool) -> Result<Response, String> {
commands::sendtextmessage(connection, target, msg) if poke {
} if let SendTextMessageTarget::Client(client) = target {
return commands::clientpoke(connection, client.clid, msg);
} else {
return Err(String::from("Poke can only be sent to clients."));
}
}
else {
commands::sendtextmessage(connection, target, msg)
}
}