Lightning-fast async Lavalink client for discord.py
Project description
Salad
Salad is a lightning-fast, completely asynchronous Python framework designed for effortless Lavalink integration with discord.py. With full Lavalink specification support, clean API architecture, and robust integrated Spotify and Apple Music functionality, Salad enables creators to craft outstanding music bots effortlessly.
Developed as an improved fork of AquaLink, Salad provides enhanced performance and developer satisfaction.
Essential Resources
Setup Instructions
Requires Python 3.8 or newer and current pip version.
Production Version (Suggested)
pip install salada
Bleeding Edge (Newest Features)
pip install git+https://github.com/ToddyTheNoobDud/salad
Quick Start Guide
Browse detailed examples in the examples folder
Here's a basic starter code:
import discord
from discord.ext import commands
from discord import app_commands
from salada import Salad
INTENTS = discord.Intents.default()
INTENTS.message_content = True
INTENTS.voice_states = True
NODES = [{
'host': '127.0.0.1',
'port': 50166,
'auth': 'youshallnotpass',
'ssl': False
}]
class MusicBot(commands.Bot):
def __init__(self):
super().__init__(command_prefix='!', intents=INTENTS)
self.salad = None
async def setup_hook(self):
self.salad = Salad(self, NODES)
await self.salad.start(NODES, str(self.user.id))
await self.tree.sync()
bot = MusicBot()
@bot.tree.command(name='play')
@app_commands.describe(query='Song name or URL')
async def play(interaction: discord.Interaction, query: str):
await interaction.response.defer()
if not interaction.user.voice:
await interaction.followup.send('❌ Join a voice channel first!')
return
player = bot.salad.players.get(interaction.guild.id)
if not player:
player = await bot.salad.createConnection({
'guildId': interaction.guild.id,
'voiceChannel': interaction.user.voice.channel.id,
'textChannel': interaction.channel.id
})
await interaction.user.voice.channel.connect()
result = await bot.salad.resolve(query, requester=interaction.user)
tracks = result.get('tracks', [])
if not tracks:
await interaction.followup.send('❌ No tracks found!')
return
track = tracks[0]
player.addToQueue(track)
if not player.playing:
await player.play()
await interaction.followup.send(f'▶️ Now playing: **{track.title}**')
else:
await interaction.followup.send(f'➕ Added: **{track.title}**')
bot.run('YOUR_BOT_TOKEN_HERE')
Common Questions
How do I configure Lavalink initially?
- Salad needs an active Lavalink server to operate. Get the newest Lavalink build here, set up your
application.yml, and launch the server prior to starting Salad in your application.
What skills do I need to use Salad?
- You need moderate Python knowledge, strong understanding of async programming patterns, and practical discord.py experience. Knowledge of music bot design is beneficial but not essential.
My application can't locate the Salad package. What should I do?
- This usually indicates Salad isn't present in your Python setup. Execute
pip install salador follow the setup commands above. When working with virtual environments, verify you've enabled the appropriate one.
Why should I choose Salad over alternative Lavalink packages?
- Salad delivers exceptional speed, a user-friendly and thoroughly documented API, consistent updates featuring current Lavalink capabilities, native compatibility with popular streaming services, and a vibrant Discord community prepared to assist.
Can Salad work with Lavalink extensions?
- Absolutely! Salad keeps complete alignment with the Lavalink specification, including extension compatibility. You can utilize any Lavalink extension smoothly with Salad.
Acknowledgments
Appreciation to southctrl for creating filters and enums!
Project details
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 salada-1.1.1.tar.gz.
File metadata
- Download URL: salada-1.1.1.tar.gz
- Upload date:
- Size: 27.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfad02b9dcce6a7ca8b169abce79ad0f4dad1ea908a523284695433a4c974b8f
|
|
| MD5 |
cfc7b38334913d6a66e5fe683f27c71c
|
|
| BLAKE2b-256 |
ae11382849b348c353978b900c7275c2a3a2657cc8343b5cc187fe6d426de028
|
File details
Details for the file salada-1.1.1-py3-none-any.whl.
File metadata
- Download URL: salada-1.1.1-py3-none-any.whl
- Upload date:
- Size: 29.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15e49967507286834efc2e139779acbf570704714010ab6b25871eaa6641b623
|
|
| MD5 |
fc549aa84a276eab84d91cc95b400cb6
|
|
| BLAKE2b-256 |
96060ae89a5d64e06464de61e226ae5a0335a393795626fc7467ce532012fac6
|