A robust and powerful, fully asynchronous Lavalink wrapper built for discord.py in Python.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file revvlink-1.0.5.tar.gz.
File metadata
- Download URL: revvlink-1.0.5.tar.gz
- Upload date:
- Size: 4.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be962ae13da0cf5324795e0d1a8d45bbd1a742ce61e1e294aa3f093a770d5ced
|
|
| MD5 |
0096ff62d4e5365dfa67f41ae322088a
|
|
| BLAKE2b-256 |
8cdbaab4f8b2de4fe93bb3cfabe65355d7729e091445ea0005772175ee76ee59
|
File details
Details for the file revvlink-1.0.5-py3-none-any.whl.
File metadata
- Download URL: revvlink-1.0.5-py3-none-any.whl
- Upload date:
- Size: 83.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a418afcd2174ca96748c50b98ad0f6c4e1b4b501be0d91fc0121e31ca87c0f7
|
|
| MD5 |
2f3a1dd42e6bdc8865dbe913aace13fa
|
|
| BLAKE2b-256 |
f06064bddf50203a07b0206248ff58465ea8deb9c3ab3ef055718fadf42acd19
|