RevvLink
RevvLink is a next-generation, high-performance Lavalink wrapper built specifically for modern Discord bot development in Python. Engineered with versatility and scale in mind, RevvLink offers a professional-grade API that makes audio integration seamless and powerful. Inspired by Wavelink.
Table of Contents
- Table of Contents
- Why RevvLink?
- Features
- Architecture
- Installation
- Quickstart
- Examples
- Contributing
- License
Why RevvLink?
| Extreme Performance: Built on top of a fully asynchronous architecture, RevvLink handles heavy loads with minimal overhead. | |
| State-of-the-Art Logic: Features advanced regional load balancing, penalty-based node selection, and intelligent failover migration. | |
| Enterprise Queue System: Robust queue management with support for custom storage backends and deep manipulation APIs. | |
| Modern Standards: Fully compatible with Lavalink v4.0+, including native support for the DAVE E2EE protocol and specialized plugins like LavaSrc. | |
| Strictly Typed: Developed with Pyright strict compliance to ensure your code is bug-free and easy to maintain. | |
| AI-Ready Documentation: Integration with Context 7 ensures our documentation is perfectly readable for AI, allowing you to build and debug faster. |
Features
Architecture & Flow
Installation
RevvLink requires Python 3.10+.
# Stable version from PyPI
pip install revvlink
For the latest development version:
pip install git+https://github.com/RevvLabs/RevvLink.git
Quickstart
Here is a minimal example of how to get up and running with RevvLink.
import discord
from discord.ext import commands
import revvlink
class Bot(commands.Bot):
def __init__(self) -> None:
super().__init__(command_prefix="!", intents=discord.Intents.all())
async def setup_hook(self) -> None:
# Connect to your Lavalink nodes
nodes = [revvlink.Node(uri="http://localhost:2333", password="youshallnotpass")]
await revvlink.Pool.connect(nodes=nodes, client=self)
bot = Bot()
@bot.command()
async def play(ctx: commands.Context, *, query: str) -> None:
if not ctx.voice_client:
vc: revvlink.Player = await ctx.author.voice.channel.connect(cls=revvlink.Player)
else:
vc: revvlink.Player = ctx.voice_client
tracks = await revvlink.Playable.search(query)
if not tracks:
return await ctx.send("No tracks found.")
track = tracks[0]
await vc.play(track)
await ctx.send(f"Now playing: {track.title}")
bot.run("YOUR_TOKEN")
Examples
Check the examples directory for advanced usage, including:
- Custom Queue Handlers
- Advanced Filters (Nightcore, etc.)
- Regional Load Balancing Configuration
- AutoPlay and Recommendation Systems
Development
To run the codebase locally and ensure everything is passing:
# Install development dependencies
pip install -e ".[dev]"
# Run Linting and Formatting checks
ruff check .
ruff format --check .
# Run Type Checking
pyright
# Run Tests
pytest
Contributing
We welcome contributions! If you'd like to help improve RevvLink:
- Fork the repository to your own account.
- Clone your fork and create a new feature branch (
git checkout -b feature/amazing-feature). - Commit your improvements (
git commit -m 'feat: add some amazing feature'). - Push the changes to your fork (
git push origin feature/amazing-feature). - Open a Pull Request from your fork to our
mainbranch.
Please ensure your code follows our Ruff and Pyright configurations.
|
|
Official Docs: revvlink.revvlabs.in |
|
|
Community: Discord Server |
Credits
License
RevvLink is released under the MIT License. See LICENSE for more information.
Metadata
Release files for revvlink 1.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| revvlink-1.0.5.tar.gz | 4.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| revvlink-1.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.2 MB
Release files / revvlink-1.0.5.tar.gz
| Download URL | revvlink-1.0.5.tar.gz |
|---|---|
| Size | 4.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
be962ae13da0cf5324795e0d1a8d45bbd1a742ce61e1e294aa3f093a770d5ced
|
|
BLAKE2b-256 checksum How to use checksums |
8cdbaab4f8b2de4fe93bb3cfabe65355d7729e091445ea0005772175ee76ee59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / revvlink-1.0.5-py3-none-any.whl
| Download URL | revvlink-1.0.5-py3-none-any.whl |
|---|---|
| Size | 83.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5a418afcd2174ca96748c50b98ad0f6c4e1b4b501be0d91fc0121e31ca87c0f7
|
|
BLAKE2b-256 checksum How to use checksums |
f06064bddf50203a07b0206248ff58465ea8deb9c3ab3ef055718fadf42acd19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|