Skip to content

tusar404/ArcMusic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

16 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎧 ArcMusic

A blazing-fast, reliable, and feature-packed Telegram bot for streaming music in group voice chats β€” built with Go.

Go Version Version License: GPLv3 GitHub Stars GitHub Forks


πŸš€ Quick Start

☁️ Deploy to Heroku (One-Click)

Click the button below to deploy ArcMusic instantly on Heroku:

Deploy to Heroku

Prerequisites

  • 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

Installation

  1. Clone Repository
git clone https://github.com/tusar404/ArcMusic.git
cd ArcMusic
  1. Install Dependencies
bash install.sh && go mod tidy
  1. Configure Environment
cp sample.env .env
# Edit .env with your credentials
  1. Get Required Credentials
  1. Start the Bot
go run ./cmd/app

βš™οΈ Configuration

All configuration is managed through environment variables. For detailed configuration instructions, see:

πŸ“– Configuration Guide

Key Variables

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.


πŸ“š Commands

User Commands

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

Admin Commands

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

Owner Commands

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

🎼 Platform System

YukkiMusic uses a modular platform system to support multiple music sources:

Supported Platforms

  1. Telegram (Priority: 100) - Direct Telegram audio/video files
  2. YouTube (Priority: 90) - YouTube videos and playlists
  3. Youtubify API (Priority: 80) - Premium YouTube downloads
  4. Arc API (Priority: 75) - YouTube downloads via Arc API
  5. YT-DLP (Priority: 70) - Direct yt-dlp integration

How It Works

  • 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


πŸ“– Documentation


πŸ—οΈ Project Structure

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

πŸ› Bug Reports & Features

Found a bug? Have a feature request?


🀝 Contributing

Contributions are welcome! Here's how to help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Adding a New Platform

See Platform System Guide for step-by-step instructions.


πŸ“œ License

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.

πŸ™Œ Credits

  • Maintainer: Tosu
  • Contributors: All amazing developers who contributed to this project
  • Base Repo: YukkiMusic
  • Libraries: Built with gogram, ntgcalls, and more

πŸ“ž Support


⚑ Performance Tips

  1. Use multiple assistant accounts - Distributes load across accounts
  2. Set appropriate limits - Adjust QUEUE_LIMIT and DURATION_LIMIT
  3. Enable auto-leave - Removes bot from inactive chats automatically
  4. Use MongoDB Atlas - Better performance than local MongoDB
  5. Set up logger - Monitor errors and optimize accordingly

Happy Streaming! 🎢

About

A high-performance, Go-based Telegram music and video streaming bot powered by NTGCalls. The next-generation evolution of ArcTunesBot, featuring smart MongoDB caching, multi-platform support (YouTube, Spotify, SoundCloud), and lightning-fast playback.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages