note: this version supports only Lavalink v4 or above
- Documentation
- Installation
- About
- Implementation Repo
- Basic Usage
- Plugins List
- Help & Support
- Example Bot
# Using npm npm install poru # Using yarn yarn add poruTo use, you need a configured Lavalink instance.
- Stable client
- Support TypeScript
- 100% Compatible with Lavalink
- Object-oriented
- 100% Customizable
- Easy to setup
- Inbuilt Queue System
- Inbuilt support for Spotify, Apple Music, and Deezer
Note: Send PR to add your repo here
| URL | Features | Additional Information |
|---|---|---|
| Poru Music | Basic example | Works with the latest Discord.js version |
| The world machine | See GitHub repo for the full list | - |
| Lunox | Look over the repo for the full list of features | Simply powerful Discord Music Bot |
const { Client, GatewayIntentBits } = require("discord.js"); const { Poru } = require("poru"); const nodes = [ { name: "local-node", host: "localhost", port: 2333, password: "youshallnotpass", }, ]; const PoruOptions = { library: "discord.js", defaultPlatform: "scsearch", }; const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildVoiceStates, GatewayIntentBits.MessageContent, ], }); client.poru = new Poru(client, nodes, PoruOptions); client.poru.on("trackStart", (player, track) => { const channel = client.channels.cache.get(player.textChannel); return channel.send(`Now playing \`${track.info.title}\``); }); client.on("ready", () => { console.log("Ready!"); client.poru.init(client); }); client.on("interactionCreate", async (interaction) => { if (!interaction.isChatInputCommand()) return; if (!interaction.member.voice.channel) { return interaction.reply({ content: `Please connect with a voice channel `, ephemeral: true, }); } const track = interaction.options.getString("track"); const res = await client.poru.resolve({ query: track, source: "scsearch", requester: interaction.member }); if (res.loadType === "error") { return interaction.reply("Failed to load track."); } else if (res.loadType === "empty") { return interaction.reply("No source found!"); } // Create connection with Discord voice channel const player = client.poru.createConnection({ guildId: interaction.guild.id, voiceChannel: interaction.member.voice.channelId, textChannel: interaction.channel.id, deaf: true, }); if (res.loadType === "playlist") { for (const track of res.tracks) { track.info.requester = interaction.user; player.queue.add(track); } interaction.reply( `${res.playlistInfo.name} has been loaded with ${res.tracks.length}` ); } else { const track = res.tracks[0]; track.info.requester = interaction.user; player.queue.add(track); interaction.reply(`Queued Track \n \`${track.info.title}\``) } if (!player.isPlaying && player.isConnected) player.play(); }); client.login("TOKEN");Note: Open a PR to add your plugin here
| Name | Link | Additional Description |
|---|---|---|
| Poru Spotify | poru-spotify | Plugin for integrating Spotify with Poru |
| Poru Deezer | poru-deezer | Plugin for integrating Deezer with Poru |
| Poru Apple Music | poru-applemusic | Plugin for integrating Apple Music with Poru |
Feel free to join our Discord server. Give us suggestions and advice about errors and new features.
With ❤️ by Paras.
