Profile picture

[Shell Script] 텔레그램(telegram)으로 메시지 보내기 (telegram api)

JaehyoJJAng2024년 01월 01일

기본 메시지 전송

#!/bin/bash

# 텔레그램 봇의 API 토큰
TELEGRAM_BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN"

# 텔레그램 채팅 ID (메시지를 받을 대상 채팅방 또는 사용자의 ID)
TELEGRAM_CHAT_ID="YOUR_TELEGRAM_CHAT_ID"

# 보낼 메시지
MESSAGE="Hello, from your Telegram bot!"

# 텔레그램 API 엔드포인트
TELEGRAM_API_URL="https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage"

# cURL을 사용하여 텔레그램 API에 POST 요청을 보냄
curl -s -X POST ${TELEGRAM_API_URL} -F "chat_id=$TELEGRAM_CHAT_ID" -F "text=$MESSAGE"

템플릿 메시지 전송

#!/bin/bash

# 텔레그램 봇의 API 토큰
TELEGRAM_BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN"

# 텔레그램 채팅 ID (메시지를 받을 대상 채팅방 또는 사용자의 ID)
TELEGRAM_CHAT_ID="YOUR_TELEGRAM_CHAT_ID"

# 보낼 메시지
MESSAGE="*Bold* _italic_ [link](https://www.example.com)"

# 이미지 파일 경로
IMAGE_PATH="/path/to/image.jpg"

# 동영상 파일 경로
VIDEO_PATH="/path/to/video.mp4"

# 파일 전송할 경우, 파일 경로
FILE_PATH="/path/to/file.txt"

# 텔레그램 API 엔드포인트
TELEGRAM_TEXT_API_URL="https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage"
TELEGRAM_PHOTO_API_URL="https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendPhoto"
TELEGRAM_VIDEO_API_URL="https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendVideo"
TELEGRAM_DOCUMENT_API_URL="https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendDocument"

# cURL을 사용하여 텔레그램 API에 POST 요청을 보냄 (텍스트 메시지)
curl -s -X POST ${TELEGRAM_TEXT_API_URL} -F "chat_id=$TELEGRAM_CHAT_ID" -F "text=$MESSAGE" -F "parse_mode=Markdown"

# cURL을 사용하여 텔레그램 API에 POST 요청을 보냄 (이미지)
curl -s -X POST ${TELEGRAM_PHOTO_API_URL} -F "chat_id=$TELEGRAM_CHAT_ID" -F "photo=@$IMAGE_PATH"

# cURL을 사용하여 텔레그램 API에 POST 요청을 보냄 (동영상)
curl -s -X POST ${TELEGRAM_VIDEO_API_URL} -F "chat_id=$TELEGRAM_CHAT_ID" -F "video=@$VIDEO_PATH"

# cURL을 사용하여 텔레그램 API에 POST 요청을 보냄 (파일)
curl -s -X POST ${TELEGRAM_DOCUMENT_API_URL} -F "chat_id=$TELEGRAM_CHAT_ID" -F "document=@$FILE_PATH"

함수로 만들어 다른 스크립트에서 불러쓰기

telegram.sh 이라는 파일에 다음과 같은 스크립트를 작성

#!/usr/bin/bash

# 텔레그램 봇 정보
TELEGRAM_INFOS=( $(awk -F '=' '{print $2}' .telegram.env) )
TELEGRAM_TOKEN="${TELEGRAM_INFOS[0]}"
TELEGRAM_CHATID="${TELEGRAM_INFOS[1]}"

send_telegram_message() {
    # 메시지 지정
    MESSAGE="$1"

    # 텔레그램 API 엔드포인트
    TELEGRAM_API_URL="https://api.telegram.org/bot${TELEGRAM_TOKEN}/sendMessage"

    # cURL을 사용하여 텔레그램 API에 POST 요청을 보냄
    curl -s -X POST ${TELEGRAM_API_URL} -F "chat_id=$TELEGRAM_CHATID" -F "text=$MESSAGE"
}

any.sh 이라는 파일에서 telegram.sh 파일을 source로 불러와 메시지 전송

#!/usr/bin/bash

# 들어온 인자 체크
if [[ "$#" -ne 1 ]]; then
    echo "check the argument"
    exit 1
fi

# 텔레그램 파일 지정
TELEGRAM_FILE='telegram.sh'
source $TELEGRAM_FILE

# 첫번째 인자로 넘어온 값 MESSAGE 변수에 전송
MESSAGE=$1

# 텔레그램 메시지 전송
send_telegram_message $MESSAGE

스크립트 실행 (잘못된 예시)

$ bash any.sh

check the argument

스크립트 실행 (올바른 예시)

$ bash any.sh Hello

{"ok":true,"result":{"message_id":14,"from":{"id":7497461921,"is_bot":true,"first_name":"Github Bot","username":"github_star_tracking_bot"},"chat":{"id":1738291418,"first_name":"\uac1c\ub625","last_name":"\ub450\uc2dd\ub625","username":"itsmesirho","type":"private"},"date":1727082228,"text":"Hello"}}

Loading script...