Add Telegram notification script

Requires:
- API Token for a bot created with the Telegram Bot Father.
- A Chat ID for a user/group that the bot has permission to post to.
This commit is contained in:
Mike Beattie 2021-01-04 18:41:02 +13:00 committed by GitHub
parent 44615c6fa2
commit 10de4b6b7b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

49
notify/telegram.sh Normal file
View File

@ -0,0 +1,49 @@
#!/bin/bash
#Support Telegram Bots
#TELEGRAM_BOT_APITOKEN=""
#TELEGRAM_BOT_CHATID=""
telegram_send() {
_subject="$1"
_content="$2"
_statusCode="$3" #0: success, 1: error 2($RENEW_SKIP): skipped
_debug "_statusCode" "$_statusCode"
TELEGRAM_BOT_APITOKEN="${TELEGRAM_BOT_APITOKEN:-$(_readaccountconf_mutable TELEGRAM_BOT_APITOKEN)}"
if [ -z "$TELEGRAM_BOT_APITOKEN" ]; then
TELEGRAM_BOT_APITOKEN=""
_err "You didn't specify a Telegram BOT API Token TELEGRAM_BOT_APITOKEN yet."
return 1
fi
_saveaccountconf_mutable TELEGRAM_BOT_APITOKEN "$TELEGRAM_BOT_APITOKEN"
TELEGRAM_BOT_CHATID="${TELEGRAM_BOT_CHATID:-$(_readaccountconf_mutable TELEGRAM_BOT_CHATID)}"
if [ -z "$TELEGRAM_BOT_CHATID" ]; then
TELEGRAM_BOT_CHATID=""
_err "You didn't specify a Telegram Chat id TELEGRAM_BOT_CHATID yet."
return 1
fi
_saveaccountconf_mutable TELEGRAM_BOT_CHATID "$TELEGRAM_BOT_CHATID"
_content="$(printf "*%s*\n%s" "$_subject" "$_content" | _json_encode)"
_data="{\"text\": \"$_content\", "
_data="$_data\"chat_id\": \"$TELEGRAM_BOT_CHATID\", "
_data="$_data\"parse_mode\": \"markdown\", "
_data="$_data\"disable_web_page_preview\": \"1\"}"
export _H1="Content-Type: application/json"
_telegram_bot_url="https://api.telegram.org/bot${TELEGRAM_BOT_APITOKEN}/sendMessage"
if _post "$_data" "$_telegram_bot_url"; then
# shellcheck disable=SC2154
_message=$(printf "%s\n" "$response" | sed -ne 's/.*"ok":\([^,]*\).*/\1/p')
if [ "$_message" = "true" ]; then
_info "telegram send success."
return 0
fi
fi
_err "telegram send error."
_err "$response"
return 1
}