From 1873c007d4463aef320b3bca8c851a339c8975cb Mon Sep 17 00:00:00 2001 From: syui Date: Thu, 8 Feb 2024 15:29:46 +0900 Subject: [PATCH] add scpt notify --- README.md | 6 ++++++ scpt/env | 15 +++++++++++++++ scpt/main.zsh | 27 +++++++++++++++++++++++++++ scpt/notify.zsh | 27 +++++++++++++++++++++++++++ scpt/refresh.zsh | 11 +++++++++++ scpt/reply.zsh | 29 +++++++++++++++++++++++++++++ scpt/token.zsh | 6 ++++++ 7 files changed, 121 insertions(+) create mode 100644 scpt/env create mode 100755 scpt/main.zsh create mode 100755 scpt/notify.zsh create mode 100755 scpt/refresh.zsh create mode 100755 scpt/reply.zsh create mode 100755 scpt/token.zsh diff --git a/README.md b/README.md index 336b472..e35cdb2 100644 --- a/README.md +++ b/README.md @@ -42,3 +42,9 @@ $ ai r -s syu.is $ ai n ``` +### bot + +``` +$ ai bot +``` + diff --git a/scpt/env b/scpt/env new file mode 100644 index 0000000..22b692b --- /dev/null +++ b/scpt/env @@ -0,0 +1,15 @@ +cfg=~/.config/ai/test.json +host=`cat $cfg|jq -r .host` +handle=`cat $cfg|jq -r .handle` +pass=`cat $cfg|jq -r .password` +date=`date --iso-8601=seconds` + +if [ ! -f $cfg.t ];then + $d/token.zsh +fi + +if [ -f $cfg.t ];then + token=`cat $cfg.t|jq -r .accessJwt` + refresh=`cat $cfg.t|jq -r .refreshJwt` + did=`cat $cfg.t|jq -r .did` +fi diff --git a/scpt/main.zsh b/scpt/main.zsh new file mode 100755 index 0000000..47871be --- /dev/null +++ b/scpt/main.zsh @@ -0,0 +1,27 @@ +#!/bin/zsh +case $OSTYPE in + darwin*) + alias date="/opt/homebrew/bin/gdate" + ;; +esac +d=${0:a:h} +source $d/env +source $d/refresh.zsh +source $d/token.zsh +source $d/reply.zsh +source $d/notify.zsh + +case $1 in + refresh|r) + refresh + ;; + token|t) + token + ;; + reply) + reply + ;; + notify|n) + notify + ;; +esac diff --git a/scpt/notify.zsh b/scpt/notify.zsh new file mode 100755 index 0000000..594aba7 --- /dev/null +++ b/scpt/notify.zsh @@ -0,0 +1,27 @@ +function notify() { + url=https://$host/xrpc/app.bsky.notification.listNotifications + if [ ! -f $d/notify.json ];then + curl -sL "Content-Type: application/json" -H "Authorization: Bearer $token" "$url?limit=100" >! $d/notify.json + fi + #cat $d/notify.json + + for ((i=0;i<=99;i++)) + do + cid=`cat $d/notify.json|jq ".|.[].[$i]?|.cid?"` + uri=`cat $d/notify.json|jq ".|.[].[$i]?|.uri?"` + echo $cid + echo $uri + cid_r=`cat $d/notify.json|jq ".[]|.[$i]?|.record.reply.root.cid?"` + + if [ "$cid_r" = "null" ];then + continue + fi + uri_r=`cat $d/notify.json|jq ".[]|.[$i]?|.record.reply.root.uri?"` + cid_p=`cat $d/notify.json|jq ".[]|.[$i]?|.record.reply.parent.cid?"` + uri_p=`cat $d/notify.json|jq ".[]|.[$i]?|.record.reply.parent.uri?"` + echo $cid_r + echo $uri_r + echo $cid_p + echo $uri_p + done +} diff --git a/scpt/refresh.zsh b/scpt/refresh.zsh new file mode 100755 index 0000000..fcde146 --- /dev/null +++ b/scpt/refresh.zsh @@ -0,0 +1,11 @@ +function refresh(){ + token=`cat $cfg.t|jq -r .accessJwt` + refresh=`cat $cfg.t|jq -r .refreshJwt` + if [ ! -f $cfg ];then + token + fi + url=https://$host/xrpc/com.atproto.server.refreshSession + j=`curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $refresh" $url` + echo $j + echo $j >! $cfg.t +} diff --git a/scpt/reply.zsh b/scpt/reply.zsh new file mode 100755 index 0000000..db4c42a --- /dev/null +++ b/scpt/reply.zsh @@ -0,0 +1,29 @@ +function reply() { + + url="https://$host/xrpc/com.atproto.repo.createRecord" + col="app.bsky.feed.post" + +json="{ + \"repo\": \"$handle\", + \"did\": \"$did\", + \"collection\": \"$col\", + \"record\": { + \"text\": \"$text\", + \"createdAt\": \"$date\", + \"reply\": { + \"root\": { + \"cid\": \"$cid\", + \"uri\": \"$uri\" + }, + \"parent\": { + \"cid\": \"$cid_p\", + \"uri\": \"$uri_p\" + } + } + } +}" + +echo $json|jq . +url=https://$host/xrpc/com.atproto.repo.createRecord +j=`curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $token" -d "$json" $url` +} diff --git a/scpt/token.zsh b/scpt/token.zsh new file mode 100755 index 0000000..0e5fda6 --- /dev/null +++ b/scpt/token.zsh @@ -0,0 +1,6 @@ +function token() { + url=https://$host/xrpc/com.atproto.server.createSession + j=`curl -sL -X POST -H "Content-Type: application/json" -d "{\"identifier\":\"$handle\",\"password\":\"$pass\"}" $url` + echo $j + echo $j >! $cfg.t +}