diff --git a/.github/workflows/today.yml b/.github/workflows/today.yml index 47765f06..2b6d4cb0 100644 --- a/.github/workflows/today.yml +++ b/.github/workflows/today.yml @@ -19,7 +19,7 @@ jobs: SSH_PUB: ${{ secrets.SSH_PUB }} run: | /bin/bash <(/bin/curl -s https://raw.githubusercontent.com/vdm-io/github-user/master/src/setup.sh) --gpg-key "$GPG_KEY" --gpg-user "$GPG_USER" --ssh-key "$SSH_KEY" --ssh-pub "$SSH_PUB" --git-user "$GIT_USER" --git-email "$GIT_EMAIL" - - name: Clone Master Repositry + - name: Clone Master Repository run: | /bin/git clone git@github.com:trueChristian/daily-light.git daily_light - name: Build the Daily Light diff --git a/.github/workflows/today_id.yml b/.github/workflows/today_id.yml new file mode 100644 index 00000000..d76e7403 --- /dev/null +++ b/.github/workflows/today_id.yml @@ -0,0 +1,34 @@ +name: "Load Today's Light Telegram ID!" + +on: + # run once per/day + schedule: + - cron: '35 14 * * *' + - cron: '35 1 * * *' + # so we can manually update + workflow_dispatch: + +jobs: + build: + runs-on: [ubuntu-20.04] + steps: + - name: Setup gitHub User Details + env: + GIT_USER: ${{ secrets.GIT_USER }} + GIT_EMAIL: ${{ secrets.GIT_EMAIL }} + GPG_USER: ${{ secrets.GPG_USER }} + GPG_KEY: ${{ secrets.GPG_KEY }} + SSH_KEY: ${{ secrets.SSH_KEY }} + SSH_PUB: ${{ secrets.SSH_PUB }} + run: | + /bin/bash <(/bin/curl -s https://raw.githubusercontent.com/vdm-io/github-user/master/src/setup.sh) --gpg-key "$GPG_KEY" --gpg-user "$GPG_USER" --ssh-key "$SSH_KEY" --ssh-pub "$SSH_PUB" --git-user "$GIT_USER" --git-email "$GIT_EMAIL" + - name: Clone Master Repository + run: | + /bin/git clone git@github.com:trueChristian/daily-light.git daily_light + - name: Build the Daily Scripture Telegram ID + env: + BOT_TOKEN: ${{ secrets.DAILY_LIGHT_BOT_TOKEN }} + CHANNEL_ID: ${{ secrets.TG_DAILY_LIGHT_GROUP_ID }} + run: | + cd daily_light + /bin/bash ./src/telegram.sh diff --git a/src/telegram.sh b/src/telegram.sh new file mode 100644 index 00000000..e0fcb967 --- /dev/null +++ b/src/telegram.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +# Do some prep work +command -v jq >/dev/null 2>&1 || { + echo >&2 "We require jq for this script to run, but it's not installed. Aborting." + exit 1 +} +command -v git >/dev/null 2>&1 || { + echo >&2 "We require git for this script to run, but it's not installed. Aborting." + exit 1 +} +command -v curl >/dev/null 2>&1 || { + echo >&2 "We require curl for this script to run, but it's not installed. Aborting." + exit 1 +} + +# global config options +DRY_RUN=0 + +# check if we have options +while :; do + case $1 in + --dry) + DRY_RUN=1 + ;; + *) # Default case: No more options, so break out of the loop. + break ;; + esac + shift +done + +#██████████████████████████████████████████████████████████████ DATE TODAY ███ +# must set the time to Namibian :) +TODAY=$(TZ="Africa/Windhoek" date '+%A %d-%B, %Y') + +BOT_TOKEN="${BOT_TOKEN}" +CHANNEL_ID="${CHANNEL_ID}" + +CHAT_INFO=$(curl -s "https://api.telegram.org/bot${BOT_TOKEN}/getChat?chat_id=${CHANNEL_ID}") + +MESSAGE_ID=$(echo $CHAT_INFO | jq ".result.pinned_message.forward_from_message_id") +TEXT=$(echo $CHAT_INFO | jq ".result.pinned_message.text" | tr -d "\"") +KEYWORD=$(echo -e "$TEXT" | awk 'NR==1 {print $1}' | tr '[:upper:]' '[:lower:]') + +FILE_PATH="${KEYWORD}.tg.id" + +# check test behaviour +if (("$DRY_RUN" == 1)); then + echo "====================================================" + echo "Message ID: ${MESSAGE_ID}" + echo "Keyword: ${KEYWORD}" + echo "====================================================" +elif [ ! -f "${FILE_PATH}" ] || [ "$(cat "${FILE_PATH}")" != "${MESSAGE_ID}" ]; then + # set ID + echo "${MESSAGE_ID}" >"${FILE_PATH}" + + # make sure to add new files and folders + git add . + git commit -am"${TODAY}" + git push +fi + +exit 0