#!/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