/remix

Primary LanguageTypeScriptGNU Affero General Public License v3.0AGPL-3.0

🎵 Calls Music Remix

An operational and exprimental Telegram music bot.


🎖 Achievements

Features

😉 Streams whatever you like

You can stream audio files, voice messages, YouTube videos with any duration, YouTube lives, YouTube playlists and even custom inputs like radios or files in the place it is hosted!

📊 Streams in multiple places

Allows you to stream different things in multiple chats simultaneously. Each chat will have its own song queue.

⚡️ Fast & Light

Starts streaming your inputs while downloading and converting them. Also, it doesn't make produce files.

😎 Has cool controls

Lets you adjust volume, loop, pause, resume, mute, unmute. Also, it has a control panel.

👮🏻‍♀️ Safe

Restricts control and sensitive commands to admins.

🗣 Speaks different languages

Remix is multilingual and speaks various languages, thanks to the translators.

🗑 Clean

Its responses and source code don't say anything referring to Calls Music. Except some places like package.json.

🚀 Running

  1. Copy example.env to .env and fill it with your credentials.
  2. Install dependencies and build:
npm install
  1. Start:
npm start

☁️ Cloud platforms

Deploy on Heroku

Deploy on Railway

Configuring

  • BOT_TOKEN: Telegram bot token.
  • STRING_SESSION: A GramJS/Telethon string session. You can generate one here.
  • API_ID: Telegram app ID.
  • API_HASH: Telegram app hash.
  • LOCALE: An available bot language. Default: en.
  • MAX_PLAYLIST_SIZE: Max YouTube playlist size. Default: 10.
  • COOKIES: Cookies for YouTube requests. Default: none.

📄 Commands

🎶 stream

Aliases: s, play, p

Takes a custom input, audio file, voice message or YouTube video/playlist link/ID and streams/queues it.

Custom inputs should be passed like this:

/stream custom your_custom_input

🔍 search

Aliases: find

Searches for a YouTube video.

✅ cancel

Cancels the active YouTube video search.

🔢 playlist

Aliases: pl, list

Streams a YouTube playlist.

🎵 now

Aliases: ns, cs, np, cp

Displays the currently streamed item.

🎛 panel [👮🏻‍♀️]

Aliases: menu, control, controls

Opens the controls panel.

🔁 loop [👮🏻‍♀️]

Aliases: repeat

Toggles loop.

🔀 shuffle [👮🏻‍♀️]

Aliases: sh, mix

Shuffles the items in the queue.

🔉 volume [👮🏻‍♀️]

Aliases: vol, v

Sets the volume.

⏸ pause [👮🏻‍♀️]

Pauses the stream.

▶️ resume [👮🏻‍♀️]

Aliases: re, res, continue

Resumes the stream.

🔇 mute [👮🏻‍♀️]

Aliases: m

Mutes the stream.

🔈 unmute [👮🏻‍♀️]

Aliases: um

Unmutes the stream.

⏩ skip [👮🏻‍♀️]

Aliases: next

Skips the current item.

⏹ leave [👮🏻‍♀️]

Aliases: stop

Clears the queue and stops streaming.

🗑 cache [👮🏻‍♀️]

Deletes caches.

🗣 Available languages

bn    Bengali
ckb   Central Kurdish
de    German
en    English
es    Spanish
fa    Farsi
id    Indonesian
ml    Malayalam
pt_BR Brazilian Portuguese
si    Sinhalese
tr    Turkish

🛫 Support

Join our chats.

💜 Contributing

New languages, bug fixes and improvements following our contribution guidelines are warmly welcomed!

Credits

  • Andrew, creator of tgcallsjs — a Node.js library for connecting to Telegram calls.
  • Painor, creator of GramJS — a super cool MTProto client.
  • Knorpel Senf, creator of grammY — a framework for Telegram bot API.
  • Tobias Kutscha, creator of ytsr for searching YouTube and ytpl for fetching YouTube playlists.
  • Me, Roj, for creating gram-tgcalls — a helper lib which connects GramJS to tgcallsjs.
  • A bunch of other special people which which can't be listed here.

📃 License

Remix is licenced under the GNU Affero General Public License v3.0. Read more here.