A blazing-fast, reliable, and feature-packed Telegram bot for streaming music in group voice chats β built with Go.
Click the button below to deploy ArcMusic instantly on Heroku:
- Go 1.25 or higher
- MongoDB (Cloud or Local)
- Telegram Bot Token (from @BotFather)
- API ID & Hash (from my.telegram.org)
- Assistant Account Session String
- Clone Repository
git clone https://github.com/tusar404/ArcMusic.git
cd ArcMusic- Install Dependencies
bash install.sh && go mod tidy- Configure Environment
cp sample.env .env
# Edit .env with your credentials- Get Required Credentials
- Bot Token: Message @BotFather, use
/newbot - API ID & Hash: Visit my.telegram.org
- Session String: Use @StringFatherBot or online generator
- MongoDB: Free tier at MongoDB Atlas
- Start the Bot
go run ./cmd/appAll configuration is managed through environment variables. For detailed configuration instructions, see:
π Configuration Guide
| Variable | Required | Purpose |
|---|---|---|
API_ID |
β | Telegram API ID |
API_HASH |
β | Telegram API Hash |
TOKEN |
β | Bot token from @BotFather |
MONGO_DB_URI |
β | MongoDB connection string |
STRING_SESSIONS |
β | Assistant account session strings |
OWNER_ID |
β | Your Telegram User ID |
LOGGER_ID |
β | Log channel ID |
See Configuration Reference for complete list of variables with examples.
| Command | Description |
|---|---|
/play <query> |
Play a song from YouTube or Telegram |
/queue |
Show current queue |
/position |
Show current track position |
/help |
Show command help |
/ping |
Check bot status |
| Command | Description |
|---|---|
/pause [seconds] |
Pause for playback (optionally auto-resume) |
/resume |
Resume paused track |
/mute [seconds] |
Mute playback (optionally auto-unmute) |
/unmute |
Unmute playback |
/seek <seconds> |
Seek to specific position |
/loop <count> |
Loop track N times |
/shuffle |
Toggle shuffle mode |
/speed <speed> |
Set playback speed (0.5-4.0x) |
/skip |
Skip to next track |
/fplay <query> |
Force play (skip queue) |
/clear |
Clear entire queue |
/remove <index> |
Remove track from queue |
/move <from> <to> |
Move track in queue |
/jump <position> |
Jump to position in current track |
/replay |
Replay current track |
/addauth <user> |
Grant user playback permission |
/delauth <user> |
Revoke user playback permission |
/authlist |
List authorized users |
/reload |
Reload admin cache |
/cplay |
Channel play mode |
| Command | Description |
|---|---|
/addsudo <user> |
Add sudo user |
/delsudo <user> |
Remove sudo user |
/sudolist |
List all sudo users |
/maintenance <on/off> |
Toggle maintenance mode |
/broadcast <message> |
Broadcast to all chats |
/stats |
Show bot statistics |
/restart |
Restart bot |
YukkiMusic uses a modular platform system to support multiple music sources:
- Telegram (Priority: 100) - Direct Telegram audio/video files
- YouTube (Priority: 90) - YouTube videos and playlists
- Youtubify API (Priority: 80) - Premium YouTube downloads
- Arc API (Priority: 75) - YouTube downloads via Arc API
- YT-DLP (Priority: 70) - Direct yt-dlp integration
- When you request a song, the bot checks each platform by priority
- First valid platform handles the request
- Automatic fallback if one method fails
- Seamless track fetching and downloading
π Platform System Guide - Learn how to add custom platforms
- Configuration Guide - All environment variables explained
- Platform System - How platforms work and add custom sources
- Database Layer - MongoDB schemas, queries, and bot data management
- Modules System - Command handlers, permissions, and feature modules
ArcMusic/
βββ .github/
β βββ README.md # Main documentation (you are here)
βββ cmd/app/
β βββ main.go # Entry point
β βββ...
βββ internal/
β βββ config/ # Configuration management
β β βββ config.go
β β βββ README.md # Detailed config guide
β βββ core/ # Core bot logic
β β βββ clients.go # Bot & assistant initialization
β β βββ room_state.go # Playback state management
β β βββ chat_state.go # Chat & assistant state
β β βββ ...
β βββ database/ # MongoDB operations
β β βββ bot_state.go
β β βββ chat_settings.go
β β βββ ...
β βββ modules/ # Command handlers
β β βββ play.go # Play command
β β βββ queue.go # Queue management
β β βββ ...
β βββ platforms/ # Music sources
β β βββ youtube.go # YouTube integration
β β βββ telegram.go # Telegram media
β β βββ ytdlp.go # YT-DLP downloader
β β βββ ...
β βββ locales/ # Multi-language support
β β βββ en.yml # English
β β βββ ...
β βββ utils/ # Utility functions
β βββ cookies/ # YouTube cookie files
β βββ ...
βββ go.mod # Go module definition
βββ go.sum # Dependency checksums
Found a bug? Have a feature request?
- Use
/bugcommand in the bot to report directly - Join our Support Chat for discussions
- Open an Issue on GitHub
Contributions are welcome! Here's how to help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
See Platform System Guide for step-by-step instructions.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
ArcMusic β A Telegram bot that streams music into group voice chats
Copyright (C) 2026 Team Arc
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
- Maintainer: Tosu
- Contributors: All amazing developers who contributed to this project
- Base Repo: YukkiMusic
- Libraries: Built with gogram, ntgcalls, and more
- Telegram Support Chat: @ArcChatz
- Updates Channel: @ArcUpdates
- GitHub Issues: Report bugs
- Use multiple assistant accounts - Distributes load across accounts
- Set appropriate limits - Adjust
QUEUE_LIMITandDURATION_LIMIT - Enable auto-leave - Removes bot from inactive chats automatically
- Use MongoDB Atlas - Better performance than local MongoDB
- Set up logger - Monitor errors and optimize accordingly
Happy Streaming! πΆ