This package is still in developement and lacks many features.
You still are able to play sound to a voice channel. Other features like channel info will follow.
Vortex are the voice servers behind revolt and they are currently being rewritten so adding new features now doesn't make any sense. User stuff, play/pause, audio works but without proper docs. I'm sorry about the docs but they will be updated in the upcoming rewrite of the library after the vortex update.
TODO:
- Play/Pause for the media class (help apreciated ;))
- Non-voice events like UserJoined and roominfo
- Audio reception
- Error Handling; Right now, you have to take care of things like stopping the music if you start to play another song while one is playing
Disclamer: I might have forgotten some things on the list and thus it might be extended. Feel free to open issues to suggest new features :)
Just execute npm install revoice.js
to install the package, have fun! :)
TL;DR: You initiate a client, you join a voice channel and then you play media.
Please note that unlike on Discord bots, Revolt bots are able to join multiple voice channels at once. Thus a single bot is able to be in every voice channel it has access to. I have no idea about the limitations.
Media has to be created using the MediaPlayer class. You can stream both node streams and media files to revolt.
Example:
If you want to see a working music bot using revoice, check out Remix!
const { Revoice, MediaPlayer } = require("revoice.js");
const fs = require("fs");
const revoice = new Revoice("the-token-of-your-bot");
const connection = await revoice.join("the-voice-channel-id");
const media = new MediaPlayer();
connection.on("join", () => {
connection.play(media); // playing audio does only work after the the bot joined the voice channel
// IMPORTANT: If you want to hear music,
// you have to call connection.play(media)
// BEFORE you start playing something in the media player
media.playFile("./assets/some-nice-song.mp3");
// or something like the following:
media.playStream(fs.createReadStream("./assets/some-nice-song.mp3"));
// you don't have to store the voice connection, you can retrieve it if you have the id of the voice channel like this:
const con = revoice.getVoiceConnection("someChannelId");
// ... pause it
media.pause();
// ... resume it later
media.resume();
});
You can pass the configuration data for revolt-api and thus connect it to a self-hosted instance. For the data you can pass, see oapi
For the documentation, please have a look at the pages deployment: https://shadowlp174.github.io/revoice.js/docs