A properly typehinted lavalink client for discord.py, nextcord, disnake and py-cord.
Mafic
A properly typehinted lavalink client for discord.py, nextcord, disnake and py-cord.
Installation
pip install mafic
Note
Usepython -m,py -m,python3 -mor similar if that is how you install packages.
Generally windows usespy -m pipand linux usespython3 -m pip
Discord Server
Join the Discord Server for support and updates.
Documentation
Features
- Fully customisable node balancing.
- Multi-node support.
- Filters.
- Full API coverage.
- Properly typehinted for Pyright strict.
Usage
Go to the Lavalink Repository to set up a Lavalink node.
import os
import mafic import nextcord from nextcord.ext import commands
class MyBot(commands.Bot): def init(self, args, *kwargs): super().init(args, *kwargs)
self.pool = mafic.NodePool(self) self.loop.createtask(self.addnodes())
async def add_nodes(self): await self.pool.create_node( host="127.0.0.1", port=2333, label="MAIN", password="<password>", )
bot = MyBot(intents=nextcord.Intents(guilds=True, voice_states=True))
@bot.slashcommand(dmpermission=False) async def play(inter: nextcord.Interaction, query: str): if not inter.guild.voice_client: player = await inter.user.voice.channel.connect(cls=mafic.Player) else: player = inter.guild.voice_client
tracks = await player.fetch_tracks(query)
if not tracks: return await inter.send("No tracks found.")
track = tracks[0]
await player.play(track)
await inter.send(f"Playing {track.title}.")
bot.run(...)