From b827471e6de1a1e6c0b3018e42eca08e9ba04ba0 Mon Sep 17 00:00:00 2001 From: Tobias Reisinger Date: Fri, 27 Sep 2024 16:16:21 +0200 Subject: [PATCH] Add ntfy-events --- src/models/event.rs | 1 + ts-control | 43 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/models/event.rs b/src/models/event.rs index fbc8b6d..281ada7 100644 --- a/src/models/event.rs +++ b/src/models/event.rs @@ -294,6 +294,7 @@ impl Serialize for Event { x.serialize_field("type", &self.event_type)?; x.serialize_field("channel", &self.channel)?; x.serialize_field("client", &self.client)?; + x.serialize_field("params", &self.params)?; x.serialize_field("message", &self.get_message())?; x.end() } diff --git a/ts-control b/ts-control index 61cced6..601bb90 100755 --- a/ts-control +++ b/ts-control @@ -9,7 +9,8 @@ not away back message message-user -events" +events +ntfy-events" _ts_control_get_entity() { entity=$(_ts_control_single_or_dmenu "$(teamspeak-query-lib "$1s")" "$2") @@ -54,6 +55,41 @@ _ts_control_single_or_dmenu() { fi } +handle_ntfy_events() { + while read -r data; do + msg=$(echo "$data" | jq -r --unbuffered '.message') + type=$(echo "$data" | jq -r --unbuffered '.type') + mode=$(echo "$data" | jq -r --unbuffered '.params.targetmode') + + echo "$data" + + if [ "$type" = "NotifyTextMessage" ] && [ "$mode" != "1" ]; then + continue # Skip all messages that are not direct messages + fi + + friendly_type="Event" + case $type in + "NotifyClientPoke") + friendly_type="Poke" + ;; + "NotifyTextMessage") + friendly_type="Message" + ;; + esac + + echo "($friendly_type) $target: $msg" + + curl -sSL \ + -H "Authorization: Bearer $TS3_NTFY_TOKEN" \ + -d "{ + \"topic\": \"$TS3_NTFY_TOPIC\", + \"message\": \"$msg\", + \"title\": \"TS3 $friendly_type\" + }" \ + "$TS3_NTFY_HOST" + done +} + # Add '$' to $1 to add 'End of line' to the regex for grep action=$(_ts_control_single_or_dmenu "$actions" "$1$") @@ -102,4 +138,9 @@ case $action in teamspeak-query-lib events --filter=others NotifyClientMoved NotifyClientEnterView NotifyClientLeftView NotifyTextMessage NotifyClientPoke \ | jq -r --unbuffered '.message' \ | tee >(xargs -I{} notify-send "TS3 Event" "{}") + ;; + "ntfy-events") + teamspeak-query-lib events --filter=others NotifyClientPoke NotifyTextMessage \ + | handle_ntfy_events + ;; esac