A feature-rich multipurpose Telegram bot with media downloading, search engines, text/image effects, URL shortener, news, sports scores, artistic effects, multi-language support, and configurable inline menus. Built with Go, uses BoltDB for persistence.
| Platform | Formats |
|---|---|
| YouTube | mp3, 360p, 720p, 1080p |
| Posts, reels | |
| TikTok | No watermark, HD, music audio |
| Dynamic quality selection | |
| Videos | |
| Snapchat | Stories, spotlight |
| Twitter/X | Media downloads |
- Pinterest Search β search and download images
- Sticker Search β search stickers from API
- Imgur Search β search and download images
- YouTube Search β search videos with quick access links
- Bing Search β web search and image search
- TextPro β styled text (Neon Light, Avengers, Pornhub Style, Harry Potter, and more)
- Photooxy β photo effects (Battle 4, TikTok, and more)
- Ephoto360 β ephoto effects (Wolf Galaxy, Free Fire Banner, Apex, and more)
- Image Effects β blur, brightness, contrast, invert, grayscale, sharpen
- Artistic Effects β pencil sketch, HDR, bokeh, thermal, X-ray, infrared, auto enhance
- Reurl, Tiny.cc, Its.sl, Cuq.in, Vurl, TinyURL
- Google News (with search query), BBC, CNN, Al Jazeera, CGTN World, TRT World
- Cricket, NFL, NBA, Cricbuzz
- Auto URL Detection β paste any supported link, bot auto-starts the download
- Multi-Language β 13 languages (en, es, fr, de, hi, ur, sw, ha, yo, zu, am, af, ig)
- Inline Keyboard Menus β contextual navigation with back buttons
- Poll Creator β two-step flow: question then options (2β10)
- Feedback System β free-text feedback stored with timestamps
- User Tracking β first seen, last seen, name/username tracking
- Admin Panel β total users and feedback count
- Inline Mode β
@botusername helpand@botusername about - Concurrent Downloads β semaphore-limited (max 2), 100MB cap
- Configurable API β base URL and API key via
config.jsonor.env - Timezone-aware β configurable timezone for timestamps
Open BotFather and send:
/newbot
Follow the prompts to choose a name and username. After creation, BotFather will give you an HTTP API token:
123456789:ABCdefGHIjklmNOPqrStuVWXyz-1234567890
Save this token β you'll need it for BOT_TOKEN.
cp .env.example .envEdit .env with your bot token and settings:
BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
ADMIN_IDS=123456789,987654321
API_BASE_URL=https://api.qasimdev.dpdns.org/api
API_KEY=qasim-dev
DB_PATH=/bot/data/bot.db| Variable | Required | Description |
|---|---|---|
BOT_TOKEN |
Yes | Telegram Bot API token from BotFather |
ADMIN_IDS |
No | Comma-separated admin IDs (merged with config) |
API_BASE_URL |
No | Overrides apiBaseUrl in config.json |
API_KEY |
No | Overrides apiKey in config.json |
DB_PATH |
No | BoltDB file path (default: ./bot.db) |
All bot settings live in config.json: bot info, owner, timezone, commands, UI buttons, API config, localization, and features. See the file directly for the full schema.
Key fields:
| Field | Description |
|---|---|
bot.name |
Bot display name |
bot.username |
Bot username (without @) |
bot.photo |
Welcome image URL |
owner.name |
Owner display name |
owner.username |
Owner Telegram handle |
owner.id |
Owner Telegram user ID (receives startup greeting) |
timezone |
Timezone for timestamps (e.g. Asia/Karachi, UTC) |
commands |
Enable/disable commands and set descriptions |
adminIds |
Additional admin user IDs |
apiBaseUrl |
Third-party API base URL |
apiKey |
Third-party API key |
ui.prefix |
Prefix shown on every message |
ui.mainMenu.buttons |
Main menu button definitions |
localization.defaultLanguage |
Fallback language |
localization.supportedLanguages |
Available languages |
Message @userinfobot β it will reply with your ID. Add it to adminIds in config.json or ADMIN_IDS in .env.
Install and run in one command β the script will prompt for your BOT_TOKEN and start the bot automatically:
| Platform | Command |
|---|---|
| Linux / macOS | bash <(curl -sL https://raw.githubusercontent.com/GlobalTechInfo/telegram-bot/main/install.sh) |
| Windows (PowerShell as Admin) | iwr -useb https://raw.githubusercontent.com/GlobalTechInfo/telegram-bot/main/install.ps1 | iex |
| Termux | pkg install curl -y && bash <(curl -sL https://raw.githubusercontent.com/GlobalTechInfo/telegram-bot/main/install.sh) |
The installer will:
- Install Git and Go if missing
- Clone the repository
- Prompt for BOT_TOKEN (and optionally ADMIN_IDS, API_URL, API_KEY)
- Build the binary
- Create a system-wide shortcut (
telegram-bot) - Start the bot automatically
Requirements: Go 1.25+
git clone https://github.com/yourusername/telegram-bot
cd telegram-bot
cp .env.example .env
# Edit .env with your BOT_TOKEN
go mod download
go build -o telegram-bot .
./telegram-botgit clone https://github.com/yourusername/telegram-bot
cd telegram-bot
cp .env.example .env
# Edit .env with your BOT_TOKEN
docker compose up --build -d
docker compose logs -fgo build -o telegram-bot .
sudo mv telegram-bot /opt/telegram-bot/
sudo mkdir -p /opt/telegram-bot/data
sudo cp .env.example /opt/telegram-bot/.env
# Edit /opt/telegram-bot/.env with your BOT_TOKENCreate /etc/systemd/system/telegram-bot.service:
[Unit]
Description=Telegram Multipurpose Bot
After=network.target
[Service]
Type=simple
Restart=always
RestartSec=5
WorkingDirectory=/opt/telegram-bot
ExecStart=/opt/telegram-bot/telegram-bot
EnvironmentFile=/opt/telegram-bot/.env
[Install]
WantedBy=multi-user.targetEnable and start:
sudo systemctl daemon-reload
sudo systemctl enable telegram-bot
sudo systemctl start telegram-botRailway β Push to GitHub β New Project β Deploy from repo β Add BOT_TOKEN env var
Render β New Web Service β Connect repo β Build: go build -o telegram-bot β Start: ./telegram-bot β Add BOT_TOKEN
Fly.io β fly launch β fly secrets set BOT_TOKEN=your_token_here β fly deploy
| Command | Access | Description |
|---|---|---|
/start |
Public | Main menu with welcome message |
/help |
Public | List of commands |
/settings |
Public | Language changer, notification toggle |
/profile |
Public | Your user info |
/feedback |
Public | Send feedback |
/about |
Public | Bot info with timezone |
/poll |
Public | Create a poll |
/yt |
Public | Download YouTube videos |
/ig |
Public | Download Instagram posts/reels |
/tt |
Public | Download TikTok videos |
/fb |
Public | Download Facebook videos |
/pin |
Public | Download Pinterest videos |
/sc |
Public | Download Snapchat stories/spotlight |
/tw |
Public | Download Twitter/X posts |
/bing |
Public | Search the web or find images |
/search |
Public | Open search menu (Pinterest, Stickers, Imgur, YouTube, Bing) |
/textmaker |
Public | Open text maker menu (TextPro, Photooxy, Ephoto360) |
/shorturl |
Public | Open URL shortener menu |
/news |
Public | Open news menu |
/sports |
Public | Open sports scores menu |
/imageeffect |
Public | Apply effects to images |
/artistic |
Public | Artistic effects for images |
/admin |
Admin | Stats panel (users, feedback count) |
main.go Entry point β loads config/env, connects to Telegram, event loop
βββ config/config.go Configuration loading, IsAdmin(), URL/key helpers
βββ handlers/handlers.go Command/callback/message handlers, all download/search/effect logic
βββ keyboards/keyboards.go Inline keyboard markup builders
βββ localization/localization.go i18n β 13 languages with English fallback
βββ session/session.go BoltDB persistence (users, sessions, feedback, settings)
βββ config.json Bot configuration (commands, UI, features, localization, API)
βββ .env Secrets (BOT_TOKEN, ADMIN_IDS, API config, DB_PATH)
βββ .env.example Template for .env
- Language: Go 1.25+
- Dependencies:
go-telegram-bot-api/v5,bbolt(embedded) - Storage: Local BoltDB file β no external database required
- API: Base URL + API key configurable via
config.jsonor.env - Concurrency: Each update in its own goroutine; download semaphore (max 2)
- Memory: 100MB per-download cap, explicit GC after large transfers
- State Machine: Per-user state tracking for multi-step flows
- Panic Safety: All goroutines have deferred panic recovery
- Add strings to the language map in
localization/localization.go(all 13 languages) Get()falls back to English for missing keys (defensive only β define all keys)
- Add handler logic in
handlers/handlers.go - Add localization strings in
localization/localization.go(all 13 languages) - Add keyboard if needed in
keyboards/keyboards.go - Register command + callback + state + auto-detect in
handlers/handlers.go - Add command + menu button in
config.json
MIT