A powerful Lavalink library for Discord.py.
Alternatives To Wavelink
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Discord.py12,9102,2874142 days ago68June 12, 2021101mitPython
An API wrapper for Discord written in Python.
Wavelink29926a day ago92June 06, 202239mitPython
A powerful Lavalink library for Discord.py.
Buttons19112 years ago15February 25, 20203mitPython
A simple to use interactive session and paginator with custom button support for discord.py.
Alternatives To Wavelink
Select To Compare

Alternative Project Comparisons
https://raw.githubusercontent.com/PythonistaGuild/Wavelink/master/logo.png https://img.shields.io/discord/490948346773635102?color=%237289DA&label=Pythonista&logo=discord&logoColor=white PyPI - Downloads Maintenance

Wavelink is a robust and powerful Lavalink wrapper for Discord.py. Wavelink features a fully asynchronous API that's intuitive and easy to use with built in Spotify Support and Node Pool Balancing.


  • Fully Asynchronous
  • Auto-Play and Looping (With the inbuilt Queue system)
  • Spotify Support
  • Node Balancing and Fail-over
  • Supports Lavalink 3.7+


Official Documentation


For support using WaveLink, please join the official support server on Discord.



The following commands are currently the valid ways of installing WaveLink.

WaveLink 2 requires Python 3.10+


py -3.10 -m pip install -U Wavelink


python3.10 -m pip install -U Wavelink

Getting Started

See also: Examples

import discord
import wavelink
from discord.ext import commands

class Bot(commands.Bot):

    def __init__(self) -> None:
        intents = discord.Intents.default()
        intents.message_content = True

        super().__init__(intents=intents, command_prefix='?')

    async def on_ready(self) -> None:
        print(f'Logged in {self.user} | {self.user.id}')

    async def setup_hook(self) -> None:
        # Wavelink 2.0 has made connecting Nodes easier... Simply create each Node
        # and pass it to NodePool.connect with the client/bot.
        node: wavelink.Node = wavelink.Node(uri='http://localhost:2333', password='youshallnotpass')
        await wavelink.NodePool.connect(client=self, nodes=[node])

bot = Bot()

async def play(ctx: commands.Context, *, search: str) -> None:
    """Simple play command."""

    if not ctx.voice_client:
        vc: wavelink.Player = await ctx.author.voice.channel.connect(cls=wavelink.Player)
        vc: wavelink.Player = ctx.voice_client

    track = await wavelink.YouTubeTrack.search(search, return_first=True)
    await vc.play(track)

async def disconnect(ctx: commands.Context) -> None:
    """Simple disconnect command.

    This command assumes there is a currently connected Player.
    vc: wavelink.Player = ctx.voice_client
    await vc.disconnect()

Lavalink Installation

Head to the official Lavalink repo and give it a star!

  • Create a folder for storing Lavalink.jar and related files/folders.
  • Copy and paste the example application.yml to application.yml in the folder we created earlier. You can open the yml in Notepad or any simple text editor.
  • Change your password in the application.yml and store it in a config for your bot.
  • Set local to true in the application.yml if you wish to use wavelink.LocalTrack for local machine search options... Otherwise ignore.
  • Save and exit.
  • Install Java 17(Windows) or Java 13+ on the machine you are running.
  • Download Lavalink.jar and place it in the folder created earlier.
  • Open a cmd prompt or terminal and change directory cd into the folder we made earlier.
  • Run: java -jar Lavalink.jar

If you are having any problems installing Lavalink, please join the official Discord Server listed above for help.

Popular Discord Bot Projects
Popular Sh Projects
Popular Artificial Intelligence Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Discord Bot