TELEPIPE(1)

NAME

telepipeA simple command-line utility to send messages to Telegram

SYNOPSIS

$sudo apt install ffmpeg

INFO

95 stars
10 forks
0 views

DESCRIPTION

A simple command-line utility to send messages to Telegram

README

Telepipe

A simple command-line utility to send messages or files to Telegram chat directly from your terminal.

Features

  • Send messages to Telegram channel/chat/group directly from command line
  • File upload support with original filename preservation
  • Video streaming support with optimized playback in Telegram
  • Message formatting support with Markdown and HTML modes
  • Scheduled message delivery with specific time or delay options
  • Interactive shell mode for multi-line messaging
  • Automatically switch between message and file mode based on content length
  • Generate shareable Telegram links
  • Quiet/Silent mode for scripting
  • Easy installation with guided setup
  • Simple configuration

Installation

  1. Clone this repository:
git clone https://github.com/linuxmaster14/telepipe.git
cd telepipe
  1. Run the installation script with an optional topic name:
chmod +x installer.sh
sudo ./installer.sh

During installation, you'll need to provide:

  1. Your Telegram Bot Token (get it from BotFather)
  2. Your Chat ID (can be a group, channel, or user ID)

Usage

# Show help
telepipe --help

Show version

telepipe --version

Send a simple message

echo "Hello from my server!" | telepipe

Send the output of a command

uptime | telepipe

Send the contents of a file

cat logfile.txt | telepipe

Send a message without displaying the URL (quiet mode)

echo "Notification" | telepipe --quiet

Start an interactive multi-line messaging session

telepipe --interactive

Send formatted messages with Markdown

echo "Bold text and italic text" | telepipe --format markdown

Send formatted messages with HTML

echo "<b>Bold</b> and <i>italic</i>" | telepipe --format html

Send code snippets with formatting

echo 'Check this inline code example' | telepipe --format markdown

Send code blocks

echo -e "```bash\necho 'Hello World'\nls -la\n```" | telepipe --format markdown

Schedule messages for future delivery

echo "Daily backup completed" | telepipe --schedule "2025-05-28 09:00:00"

Send delayed messages

echo "Server maintenance starting" | telepipe --delay 1800 # 30 minutes delay

Upload files with original names

telepipe --file backup.tar.gz telepipe --file /path/to/document.pdf telepipe --file archive.zip --quiet

Upload videos with streaming support

telepipe --video movie.mp4 telepipe --video /path/to/video.avi

Upload files/videos with captions

echo "Database backup from $(date)" | telepipe --file backup.sql echo "Movie night! 🎬" | telepipe --video film.mp4

Use it in your scripts

backup_db() {

backup logic here

if [ $? -eq 0 ]; then echo "Database backup completed successfully at $(date)" | telepipe else echo "Database backup FAILED at $(date)" | telepipe fi }

Script example with quiet mode

monitoring_check() { if ! ping -c 1 server.example.com > /dev/null; then echo "Server unreachable at $(date)" | telepipe --quiet && echo "Alert sent" fi }

Scheduled maintenance notifications

schedule_maintenance_alerts() { echo "🔧 Server maintenance starts in 1 hour" | telepipe --delay 3600 echo "⚠️ Server maintenance starts in 15 minutes" | telepipe --delay 5400 echo "🚨 Server maintenance starting NOW" | telepipe --delay 6900 }

Daily report scheduling

schedule_daily_reports() { echo "📊 Daily system report: $(date)" | telepipe --schedule "$(date -v+1d '+%Y-%m-%d 09:00:00')" }

Automated backup with file upload

daily_backup() { local backup_file="backup-$(date +%Y%m%d).tar.gz" tar -czf "$backup_file" /important/data if [ $? -eq 0 ]; then echo "✅ Backup completed successfully at $(date)" | telepipe --file "$backup_file" else echo "❌ Backup failed at $(date)" | telepipe fi }

Log file monitoring with upload

check_error_logs() { local error_count=$(grep -c "ERROR" /var/log/app.log) if [ "$error_count" -gt 10 ]; then echo "🚨 High error count detected: $error_count errors" | telepipe --file /var/log/app.log fi }

Options

  • -h, --help - Show this help message and exit
  • -i, --interactive - Enter interactive mode for multi-line messaging
  • -q, --quiet - Quiet mode - suppress output (except errors)
  • -v, --version - Show version information and exit
  • --format MODE - Set message formatting mode: markdown, html, or none
  • --schedule TIME - Schedule message for specific time (YYYY-MM-DD HH:MM:SS)
  • --delay SECONDS - Delay message delivery by specified seconds
  • --file PATH - Upload a file to Telegram (preserves original filename)
  • --video PATH - Upload a video with streaming support (auto-detects video metadata)

Message Formatting

Telepipe supports three formatting modes:

Markdown Mode (--format markdown)

Uses Telegram's MarkdownV2 formatting with automatic escaping of special characters:

  • Bold: *bold text*
  • Italic: _italic text_
  • Inline code: `inline code`
  • Code blocks:
    ```language
    code block
    ```
    

Example:

echo "*Important*: Server status is \`ONLINE\`" | telepipe --format markdown

HTML Mode (--format html)

Uses HTML formatting tags:

  • Bold: <b>bold text</b>
  • Italic: <i>italic text</i>
  • Inline code: <code>inline code</code>
  • Code blocks: <pre>code block</pre>

Example:

echo "<b>Alert</b>: Database backup <code>COMPLETED</code>" | telepipe --format html

Plain Text Mode (--format none or default)

Sends messages without any formatting - useful when you want to send literal markdown/HTML characters.

Scheduled Message Delivery

Telepipe supports scheduling messages for future delivery in two ways:

Absolute Time Scheduling (--schedule)

Schedule a message for a specific date and time:

# Schedule a reminder for a specific time
echo "Meeting starts in 15 minutes" | telepipe --schedule "2025-05-28 14:45:00"

Schedule daily reports

echo "Daily backup completed successfully" | telepipe --schedule "2025-05-29 09:00:00"

Works with formatting

echo "Important: Server maintenance begins now" | telepipe --schedule "2025-05-28 22:00:00" --format markdown

Relative Time Delay (--delay)

Delay message delivery by a specified number of seconds:

# Send reminder in 1 hour (3600 seconds)
echo "Backup completed" | telepipe --delay 3600

Send alert in 30 minutes (1800 seconds)

echo "⚠️ Maintenance window starting soon" | telepipe --delay 1800

Quick 5-minute delay

echo "Process finished successfully" | telepipe --delay 300

Notes:

  • Scheduled messages run as background processes
  • The process ID is displayed for tracking (unless using --quiet)
  • Scheduling cannot be combined with --interactive mode
  • Time format for --schedule is: YYYY-MM-DD HH:MM:SS
  • Scheduled time must be in the future

File Upload

Telepipe can upload files directly to Telegram while preserving their original filenames:

Basic File Upload

# Upload a file
telepipe --file backup.tar.gz
telepipe --file /path/to/document.pdf
telepipe --file ~/Downloads/movie.mp4

Upload with quiet mode (no URL output)

telepipe --file large-backup.zip --quiet

File Upload with Caption

You can add a caption to uploaded files by piping text to telepipe:

# Add caption from command line
echo "Database backup from $(date)" | telepipe --file backup.sql

Add caption from another command

hostname | telepipe --file system-report.txt

Multi-line caption

echo -e "Weekly Report\nGenerated: $(date)\nSize: $(du -h report.pdf)" | telepipe --file report.pdf

Practical Examples

# Backup with timestamp caption
echo "Backup completed at $(date)" | telepipe --file backup-$(date +%Y%m%d).tar.gz

Log file with context

echo "Error logs from server crash at $(date)" | telepipe --file /var/log/error.log

Automated script backup

tar -czf backup.tar.gz /important/data && echo "Backup created: $(du -h backup.tar.gz)" | telepipe --file backup.tar.gz

Notes:

  • Maximum file size: 50MB (Telegram Bot API limit)
  • Supports all file types
  • Original filename is preserved
  • Cannot be combined with --interactive, --schedule, or --delay options
  • Caption text supports the same formatting as regular messages when used with --format

Video Streaming

Telepipe supports optimized video uploads with streaming playback directly in Telegram:

Basic Video Upload

# Upload video with streaming support
telepipe --video movie.mp4
telepipe --video /path/to/video.avi
telepipe --video recording.mov

Upload with quiet mode

telepipe --video large-video.mp4 --quiet

Video Upload with Caption

# Add caption to video
echo "Movie night! 🎬" | telepipe --video film.mp4
echo "Security footage from $(date)" | telepipe --video camera-feed.mp4

Formatted caption

echo "Important: Training video" | telepipe --video training.mp4 --format markdown

Advanced Features

  • Automatic metadata detection: If ffprobe (from FFmpeg) is installed, telepipe automatically detects:

    • Video duration
    • Resolution (width/height)
    • These enhance the streaming experience in Telegram
  • Streaming optimization: Videos are sent using Telegram's sendVideo API with supports_streaming=true, enabling:

    • Inline playback in chat
    • Better video player interface
    • Thumbnail generation
    • Progress bar during playback

Install FFmpeg for Better Support

# macOS
brew install ffmpeg

Ubuntu/Debian

sudo apt install ffmpeg

CentOS/RHEL

sudo yum install ffmpeg

Practical Examples

# Screen recording with timestamp
echo "Screen recording from $(date)" | telepipe --video screen-capture.mp4

Security camera upload

echo "Motion detected at front door" | telepipe --video security-$(date +%H%M).mp4

Meeting recording

echo "📹 Team meeting recording - $(date '+%Y-%m-%d')" | telepipe --video meeting.mp4 --format markdown

Video vs File Upload:

  • Use --video for: MP4, AVI, MOV, MKV, WebM video files
  • Use --file for: Documents, archives, images, audio, or when you want document-style upload

Notes:

  • Maximum video size: 50MB (Telegram Bot API limit)
  • Supports common video formats (MP4, AVI, MOV, MKV, WebM, etc.)
  • Automatic streaming optimization
  • Cannot be combined with --interactive, --schedule, or --delay options
  • Caption text supports formatting when used with --format

Interactive Mode Formatting

In interactive mode, you can change formatting on-the-fly:

telepipe --interactive
# Then use commands like:
# /format markdown
# /format html
# /status

Configuration

The configuration file is located at /etc/telepipe/config and includes the following settings:

  • BOT_TOKEN: Your Telegram bot token from BotFather
  • CHAT_ID: ID of the chat where messages will be sent
  • MAX_LEN: Maximum message length before sending as file (default: 4096)
  • TIMEOUT: API request timeout in seconds (default: 5)
  • DISABLE_LINK_PREVIEW: Whether to disable link previews (default: true)

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

SEE ALSO

clihub3/4/2026TELEPIPE(1)