From fc90098cd9cc8ca24ea6359821ce7d09f3263fcc Mon Sep 17 00:00:00 2001 From: dataprolet Date: Sun, 27 Jul 2025 20:00:13 +0200 Subject: [PATCH] Add Scripts/bluesky-dm-to-telegram.sh --- Scripts/bluesky-dm-to-telegram.sh | 89 +++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Scripts/bluesky-dm-to-telegram.sh diff --git a/Scripts/bluesky-dm-to-telegram.sh b/Scripts/bluesky-dm-to-telegram.sh new file mode 100644 index 0000000..880a273 --- /dev/null +++ b/Scripts/bluesky-dm-to-telegram.sh @@ -0,0 +1,89 @@ +#!/bin/bash + +set -x + +# https://docs.bsky.app/docs/get-started + +PDSHOST="" +BLUESKY_HANDLE=".bsky.social" +BLUESKY_PASSWORD="" # App-Passwort +TOKEN_FILE="" +ACCESS_JWT=$(cat $TOKEN_FILE | jq -r .ACCESS_JWT) +REFRESH_JWT=$(cat $TOKEN_FILE | jq -r .REFRESH_JWT) +CONVO_ID="" # Konversations-ID mit dem Bluesky-Bot +MESSAGE_FILE="" +CHAT_ID="" # Telegram-Chat mit dem Bot +TOKEN="" # Token des Telegram-Bot +LAST_ID=" $TOKEN_FILE +} + +# Hole Status der Session +get_session() { + curl -s -X GET $PDSHOST/xrpc/com.atproto.server.getSession \ + -H "Authorization: Bearer $ACCESS_JWT" | jq -r .active +} + +# Hole letzte Nachricht (Nachrichten-ID, URI, Handle) +get_message() { + curl -s -X GET https://api.bsky.chat/xrpc/chat.bsky.convo.getConvo?convoId="$CONVO_ID" \ + -H "Authorization: Bearer $ACCESS_JWT" \ + | jq '{message_id: .convo.lastMessage.id, uri: .convo.lastMessage.embed.record.uri, handle: .convo.lastMessage.embed.record.author.handle}' \ + > $MESSAGE_FILE +} + +##### + +# Prüfe, ob Session noch aktiv ist oder erneuere Session +session_active=$(get_session) +if [[ $session_active = "true" ]]; then + echo "Session ist aktiv." +else + refresh_session +fi + +# Hole letzte Nachricht +get_message + +# Erstelle Post-URL aus Variablen +id=$(cat $MESSAGE_FILE | jq -r .message_id) +uri=$(cat $MESSAGE_FILE | jq -r '(.uri | split("/")[-1])') +handle=$(cat $MESSAGE_FILE | jq -r .handle) + +# Prüfe, ob letzte Nachricht schon geschickt wurde +if [[ $(cat "$LAST_ID") != "${id}" ]]; then + + # Sende Post-URL an Telegram-Bot + url="https://bsky.app/profile/${handle}/post/${uri}" + + # Wenn senden erfolgreich, speichere Nachrichten-ID + if curl -s -X POST https://api.telegram.org/bot$TOKEN/sendMessage -d chat_id=$CHAT_ID -d text="$url"; then + echo ${id} > $LAST_ID + fi +fi