Add script for Telegram updates long polling

This commit is contained in:
ekzyis 2023-09-09 16:49:22 +02:00
parent 3c2cee00fe
commit 4ae7e26510
1 changed files with 42 additions and 0 deletions

42
telegram_poll.sh Normal file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env bash
usage() {
echo "Usage: $(basename $0) offset"
}
if [ ! $# -eq 1 ]; then
usage
exit 1
fi
OFFSET=$1
if [ -z $TELEGRAM_BOT_TOKEN ]; then
echo "TELEGRAM_BOT_TOKEN must be set with OpenAI authorization bearer token (without Bearer prefix)"
exit 1
fi
TIMEOUT=5
while true
do
echo "Long polling for telegram updates with offset $OFFSET ..."
R=$(curl --silent "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/getUpdates?timeout=$TIMEOUT&offset=$OFFSET")
echo "$R" | jq
update_id="$(echo "$R" | jq -e '.result[0].update_id')"
if [ ! $? -eq 0 ]; then
echo "Timeout"
continue
fi
text=$(echo "$R" | jq -e '.result[0].message.text')
if [ $? -eq 0 ]; then
text=$(echo "$text" | sed -e 's/^"//' -e 's/"$//')
if [[ $text = /prompt* ]]; then
prompt="${text:8}"
chat_id="$(echo "$R" | jq -e '.result[0].message.chat.id')"
echo "Received prompt "$prompt" in chat $chat_id"
# TODO: send prompt to OpenAI and stream response back to chat
fi
fi
OFFSET=$(( update_id + 1))
done