Содержание

Как Использовать Telegram API с Bash: Отправка Сообщений, Файлов, Фотографий

Telegram API предлагает широкие возможности для разработчиков, желающих интегрировать Telegram в свои приложения или создавать ботов. Одним из нестандартных, но интересных способов взаимодействия с Telegram API является использование Bash, командной оболочки Linux. Этот подход может быть особенно полезен для автоматизации простых задач, например, отправки уведомлений или обновлений.

Подготовка

Перед началом работы с Telegram API через Bash необходимо выполнить несколько шагов:

  1. Создание Бота: Воспользуйтесь BotFather в Telegram для создания нового бота. В процессе вы получите токен, который будет использоваться для аутентификации.
  2. Установка необходимых инструментов: Убедитесь, что на вашем компьютере установлены curl и jq. curl используется для отправки запросов к API, а jq - для обработки JSON-ответов.
apt install curl jq

Основные Команды

Отправка Сообщений. Чтобы отправить сообщение через Telegram API, используйте следующую команду Bash:

#!/bin/bash
TOKEN="ваш_токен"
CHAT_ID="id_чата"
MESSAGE="Ваше сообщение"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE"

Получение Обновлений. Для получения обновлений (например, сообщений, отправленных вашему боту), используйте:

#!/bin/bash
TOKEN="ваш_токен"
URL="https://api.telegram.org/bot$TOKEN/getUpdates"
curl -s $URL | jq .

Скрипт для отсылки файлов, фото, сообщений через Telegram API

В листинге описаны несколько функций на bash для отправки сообщений, фотографий и любых документов в чат. Вам нужно задать свой токет и чат id (не забывает добавлять минус, если отсылаете в группу).

#!/bin/bash
 
TOKEN='Enter your data'
CHAT_ID='Enter your data'
 
DATE=$(date +%Y-%m-%d)
HOSTNAME=$(hostname -f)
SCRIPT_NAME=${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}
SUBJECT="$DATE  ${HOSTNAME} -> ${SCRIPT_NAME}"
 
# Function to send message to Telegram
send_message() {
   if [[ $1 != 0 ]]; then
      MESSAGE=$(cat /tmp/backup_log)
      curl \
      --data parse_mode=HTML \
      --data chat_id=${CHAT_ID}} \
      --data text="<b>${SUBJECT} </b>%0A<code>${MESSAGE}</code>" \
      --request POST https://api.telegram.org/bot${TOKEN}/sendMessage
   fi
   exit 0
}
 
#echo "#### TEST sendMessage ####" > /tmp/backup_log
#send_message 1
 
# Function to send a file to Telegram
send_file() {
 local file_path="$1"
 local caption="$2"
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendDocument" \
 -F "chat_id=$CHAT_ID" \
 -F "document=@$file_path" \
 -F "caption=$caption"
}
 
#send_file "$1" "Your file is here." > /dev/null
#send_file "/tmp/pdf.pdf" "$DATE  ${HOSTNAME} -> ${SCRIPT_NAME}"
 
# Function to send a photo to Telegram
send_photo() {
 local file_path="$1"
 local caption="$2"
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendPhoto" \
 -F "chat_id=$CHAT_ID" \
 -F "photo=@$file_path" \
 -F "caption=$caption"
 
}
 
#send_photo "/tmp/screenshot.png" "$DATE  ${HOSTNAME} -> ${SCRIPT_NAME}"

Преимущества и Ограничения

Использование Bash для работы с Telegram API имеет свои преимущества и ограничения. Среди преимуществ:

  1. Простота и доступность: Bash доступен в любом Linux-окружении без необходимости установки дополнительного программного обеспечения.
  2. Идеально для автоматизации: Легко интегрируется в скрипты для автоматизации различных задач.

Однако, есть и ограничения:

  1. Ограниченные возможности: Bash не подходит для сложных задач, связанных с обработкой данных или асинхронным взаимодействием.
  2. Зависимость от внешних инструментов: Для обработки JSON требуется jq, что может быть неудобно в некоторых средах.

Заключение

Использование Telegram API через Bash представляет собой удобный способ для выполнения базовых задач, связанных с автоматизацией и отправкой уведомлений. Этот метод хорошо подходит для простых сценариев использования, но для более сложных задач рекомендуется использовать более мощные языки программирования, такие как Python или JavaScript, например 5 вариантов Запуска скрипта на Python в Linux в фоновом режиме.