// Using npm
npm install poru
// Using yarn
yarn add poru
To 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
Poru Music Example bot as guide for beginning.
Note : Send pr to add your repo here
URL | Features | Additional Information |
---|---|---|
Poru Music | Basic example | works with latest djs version |
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 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 === "LOAD_FAILED") {
return interaction.reply("Failed to load track.");
} else if (res.loadType === "NO_MATCHES") {
return interaction.reply("No source found!");
}
//create connection with discord voice channnel
const player = client.poru.createConnection({
guildId: interaction.guild.id,
voiceChannel: interaction.member.voice.channelId,
textChannel: interaction.channel.id,
deaf: true,
});
if (res.loadType === "PLAYLIST_LOADED") {
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");
Feel free to join our discord server, Give us suggestions and advice about errors and new features. with ❤️ by Paras .