Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/shadowlp174/revoice.js

A NodeJS package for voice channel interactions on Revolt. This package lets you join voice channels, play music and more!
https://github.com/shadowlp174/revoice.js

bot channels ffmpeg js nodejs npm npm-package package revolt revolt-chat revoltjs unofficial voice voice-channel

Last synced: about 12 hours ago
JSON representation

A NodeJS package for voice channel interactions on Revolt. This package lets you join voice channels, play music and more!

Awesome Lists containing this project

README

        

# Revoice.js - A Voice Module for Revolt

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.

## **Developement paused because of vortex rewrite**

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**:

- [X] Play/Pause for the media class (help apreciated ;))
- [X] 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 :)*

## Installation

Just execute `npm install revoice.js` to install the package, have fun! :)

## Usage

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](https://github.com/remix-bot/revolt)!

```JavaScript
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();
});
```

# Connect to self-hosted instances

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](https://github.com/insertish/oapi#example)

## Documentation

For the documentation, please have a look at the pages deployment: https://shadowlp174.github.io/revoice.js/docs