Skip to main content

A performant lavalink client for python

Project description

Salad

License: WTFPL Python Code style: black Discord

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

Unstable version of Salad.

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('putyourtokenhere.')

Common Questions

How do I configure Lavalink initially?

  • To configure Lavalink look Here For plugins look Here

What skills do I need to use Salad?

  • Salad requires you have a little experience with python and discord.py

My application can't locate the Salad package. What should I do?

  • This means you don't have Salad installed, To install it run: pip install salada and check if it's installed by doing pip freeze and searching for salada.

Why should I choose Salad over alternative Lavalink packages?

  • Salad has a wide variety of features to use aswell as enableReconnect, infiniteReconnect, maxReconnectAttempts and autoplay coming soon.

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

salada-1.2.7.tar.gz (32.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

salada-1.2.7-py3-none-any.whl (40.9 kB view details)

Uploaded Python 3

File details

Details for the file salada-1.2.7.tar.gz.

File metadata

  • Download URL: salada-1.2.7.tar.gz
  • Upload date:
  • Size: 32.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for salada-1.2.7.tar.gz
Algorithm Hash digest
SHA256 0481d7025ff0015eb9f1cd1af76407286777adb3f67eda285abe29eae766022d
MD5 a4546f9766af9b3cfa3f0fe09876cadd
BLAKE2b-256 a53d5f20d4a32c4368324eefed993464d196a5be14062c6db9a918b630a2ff79

See more details on using hashes here.

File details

Details for the file salada-1.2.7-py3-none-any.whl.

File metadata

  • Download URL: salada-1.2.7-py3-none-any.whl
  • Upload date:
  • Size: 40.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for salada-1.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 341465f7365ac15b6351d7b161e685a2287df6f4ed7afe243f38d0c68c416ebb
MD5 ca2f69f1e8a9368c39476448eefbe2c0
BLAKE2b-256 c5d0cd1c15828028758a0d0f8ba3b36bcebc912c9671963f43a9981a5e5fee0f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page