Giter Club home page Giter Club logo

poru's Introduction

Poru Logo

Discord npm GitHub Stars GitHub issues Snyk Vulnerabilities for npm package NPM

note: this version supports only Lavalink v4 or above

Poru NPM Package

Table of contents

Installation

# Using npm
npm install poru

# Using yarn
yarn add poru

About

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

Implementation Repo:

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

Example usage basic 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");

Plugins list:

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

Need Help?

Feel free to join our Discord server. Give us suggestions and advice about errors and new features.

With ❤️ by Paras.

poru's People

Contributors

1intan99 avatar 4i8 avatar adh319 avatar anonymous4078 avatar appujet avatar darkslayerhaos avatar emirkabal avatar fabienbounoir avatar flameface avatar itsparasdev avatar joniii11 avatar lucasb25 avatar mrparasop avatar ombodkhe1 avatar parasop avatar sarcasterxo avatar stef-00012 avatar tysonop avatar unschooledgamer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

poru's Issues

Help wanted

loading the poru 

_loadPlayer() {
    this.poru = new Poru(this,nodes,PoruOptions)

    return this.poru;
  };
    -------------------------------------------------------------------------------------------------------------------------
  
  nodes and prouoptions are 

  const nodes = [
  {
    name: "node",
    host: "hostid",
    port: 2020,,
    password: "hostpass",
    secure: false
  }
]
const PoruOptions = {
  reconnectTime: 0,
  resumeKey: 'MyPlayers',
  resumeTimeout: 60,
  defaultPlatform: "ytsearch"
}
    -------------------------------------------------------------------------------------------------------------------------
 load the poru main events
 
 _loadNodeEvents() {
    readdirSync("./src/events/Node").forEach(file => {
      const event = require(`../events/Node/${file}`);
      this.poru.on(event.name, (...args) => event.run(this, ...args));
    });
    console.log(`Loading Events Lavalink`);
    -------------------------------------------------------------------------------------------------------------------------
  
    node connect event
   
module.exports = {
    name: "nodeConnect",
    run: async (client, node) => {
     
       console.log(`Node ${node.name} is ready!`)
    }
};

why is this not working its load the event but node is not readying

trackEnd event problem

I am facing trackEnd event problem, it doesn't emits I just wanna do that if tracks get over the message gets delete of nowplaying message and I try logging the message(i have access the message) it doesn't gets logs So, I got to know it isn't emitting(i am not sure it's from poru side)

Questions

  1. how do i enable/disable autoresume on this package?
  2. how do i optimize memory on this like if player start it slowly getting more and more ram so any way to stop that?

filter's issue

There's a issue with filters to enable or disable them you need to execute the command twice, Kindly fix this bug

resolve function bug

if bot reslove track it not give right track it give random one not [0] track it search,
before 2-3 days it working fine now it got broke

Bug with poru

This bug already started for me a month ago.
I am experiencing an issue where music would just stop playing randomly. I get no errors or anything whenever this happens. Lavalink still sends events and still play's music according to the logs, though I think my bot just stops sending voice data to Discord...

addd this

add apple music thumbnail img
here is func code

const axios = require('axios');
const cheerio = require('cheerio');

 async fetchAppleMusicThumbnailUrl(appleMusicURL) {
        try {
            const response = await axios.get(appleMusicURL);
            const $ = cheerio.load(response.data);
            const jsonLdScript = $('script[type="application/ld+json"]').html();
            const jsonLdData = JSON.parse(jsonLdScript);
            return jsonLdData.image || null;
        } catch (error) {
            console.error("Error fetching and parsing Apple Music page:", error);
            return null;
        }
    }

Issue Autoplay

Hello I tried the Autoplay() function this last one skips the music by putting a music found by the module but the problem when the music ends it does not try to find another music but it has stopped playing why not put it in the Loop function

that the issue is the null session id

2023-07-30 16:45:46.683  INFO 8760 --- [  XNIO-1 task-3] lavalink.server.io.RequestLoggingFilter  : DELETE /v3/sessions/x1qfi6uzdpuz4txe/players/997829694273626172, client=127.0.0.1
2023-07-30 16:45:46.684  INFO 8760 --- [  XNIO-1 task-3] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/x1qfi6uzdpuz4txe/players/997829694273626172/?noReplace=false, client=127.0.0.1, payload={"paused":true}
2023-07-30 16:45:46.813  INFO 8760 --- [  XNIO-1 task-3] lavalink.server.io.RequestLoggingFilter  : DELETE /v3/sessions/x1qfi6uzdpuz4txe/players/997829694273626172, client=127.0.0.1
2023-07-30 16:45:46.814  INFO 8760 --- [  XNIO-1 task-3] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/x1qfi6uzdpuz4txe/players/997829694273626172/?noReplace=false, client=127.0.0.1, payload={"paused":true}
2023-07-30 16:45:46.936  INFO 8760 --- [  XNIO-1 task-3] lavalink.server.io.RequestLoggingFilter  : DELETE /v3/sessions/x1qfi6uzdpuz4txe/players/997829694273626172, client=127.0.0.1
2023-07-30 16:45:46.936  WARN 8760 --- [  XNIO-1 task-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Instantiation of [simple type, class dev.arbjerg.lavalink.protocol.v3.VoiceState] value failed for JSON property sessionId due to missing (therefore NULL) value for creator parameter sessionId which is a non-nullable type; nested exception is com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class dev.arbjerg.lavalink.protocol.v3.VoiceState] value failed for JSON property sessionId due to missing (therefore NULL) value for creator parameter sessionId which is a non-nullable type<EOL> at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: dev.arbjerg.lavalink.protocol.v3.VoiceState["sessionId"])]
2023-07-30 16:45:46.937  INFO 8760 --- [  XNIO-1 task-3] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/x1qfi6uzdpuz4txe/players/997829694273626172/?noReplace=false, client=127.0.0.1, payload={"voice":{"sessionId":null,"token":"0732984e6c349577","endpoint":"rotterdam2560.discord.media:443"}}

This concern concerns the Poru customer

  • Poru v4.2
  • Node 18.16.1

filters

hello i’m having issues with the filters so i’m using lavalink v3.6.2 and the filters don’t work i’ll show you the lavalink error if you need it just disconnects from the lavalink server

Receive user audio

Hi! Thanks for this library.

I develop a discord bot which needs to hear what people say to him and also plays music. I have recently switched from ytdl-core-discord to Lavalink and found your library.

I had used const connection = discordJsVoice.getVoiceConnection(guild.id) to get discord.js connection and then connection.receiver.subscribe to get user audio stream before. Now I don't see any discord.js connection that I can get inside poru.

How can I listen to user speaking with poru?

Missing types in TS declarations.

For example, the queue class extends Array, but it most likely would extend Array, since it's an array of tracks.
I am unsure if this was intentional, but if not, it would greatly assist me in using TypeScript.

The Poru class also seems to be missing a few types, such as the return type of the functions decodeTrack(s), getLavalinkInfo, and getLavalinkStatus.

It's a really great package, but I'm having a bit of trouble with TypeScript regarding missing type declarations.

Change this on new update

currently loop method has integer right so it hard to understand so i suggest

disableloop = loop: 'none'
trackloop = loop: 'track'
queueloop loop: 'queue'
change integer and add it string option

Return Null

Response {
tracks: undefined,
loadType: undefined,
playlistInfo: undefined
}

image

problem with lavalink nodes

if (!nodes) throw new Error("[Poru Error] You didn't provide a lavalink node");
Error: [Poru Error] You didn't provide a lavalink node

payload={"encodedTrack":null}

Hello, I use the lavalink technique for the music of my discord bot, since I only use spotify as a playback source I sometimes have random encoder returns payload={"encodedTrack":null} which makes the music crash

Information & version of modules and software used
Poru: 4.2.1
nodejs: 18.17.1
java: 17
lavalink: 3.7.8
lavasrc: 3.2.6

2023-08-19 14:39:09.687  INFO 19906 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded track You Take My Breath Away - Mono Version
2023-08-19 14:39:09.688  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : GET /v3/loadtracks?identifier=https%3A%2F%2Fopen.spotify.com%2Ftrack%2F3BCMsz55asr7Yr6DqB9N8D, client=127.0.0.1
2023-08-19 14:42:08.295  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/es47eqctusjcm2q7/players/639211220280541194/?noReplace=false, client=127.0.0.1, payload={"encodedTrack":"QAAA2QIACldoYXQgYSBKb2IADkRldmluIFRoZSBEdWRlAAAAAAAFEwIAFjFRcE1OcHprTXhjaE9lWU9uOVJiTkoAAQA1aHR0cHM6Ly9vcGVuLnNwb3RpZnkuY29tL3RyYWNrLzFRcE1OcHprTXhjaE9lWU9uOVJiTkoAB3Nwb3RpZnkBAAxVU1pYVDEwNDE0NDQBAEBodHRwczovL2kuc2Nkbi5jby9pbWFnZS9hYjY3NjE2ZDAwMDBiMjczMzQwMTUyOTAxYWU2MmI2NzdmNzg4MmRkAAAAAAAAAAA="}
2023-08-19 14:42:09.225  INFO 19906 --- [  XNIO-1 task-2] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://open.spotify.com/track/27Hl8SDrqAYTr0Gdx5daSM"
2023-08-19 14:42:09.291  INFO 19906 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded track Bourbon Scars
2023-08-19 14:42:09.293  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : GET /v3/loadtracks?identifier=https%3A%2F%2Fopen.spotify.com%2Ftrack%2F27Hl8SDrqAYTr0Gdx5daSM, client=127.0.0.1
2023-08-19 14:42:38.934  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/es47eqctusjcm2q7/players/639211220280541194/?noReplace=false, client=127.0.0.1, payload={"encodedTrack":"QAAA8AIAJllvdSBUYWtlIE15IEJyZWF0aCBBd2F5IC0gTW9ubyBWZXJzaW9uAAlSZXggU21pdGgAAAAAAAMDTQAWM0JDTXN6NTVhc3I3WXI2RHFCOU44RAABADVodHRwczovL29wZW4uc3BvdGlmeS5jb20vdHJhY2svM0JDTXN6NTVhc3I3WXI2RHFCOU44RAAHc3BvdGlmeQEADFVTU00xMTcwNDI0NAEAQGh0dHBzOi8vaS5zY2RuLmNvL2ltYWdlL2FiNjc2MTZkMDAwMGIyNzNkMTc0MWM5ZjA2ODc2Y2I2MzFjOTY0NmUAAAAAAAAAAA=="}
2023-08-19 14:42:39.947  INFO 19906 --- [  XNIO-1 task-2] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://open.spotify.com/track/44kFSc9ud98cnHq104T2RL"
2023-08-19 14:42:40.014  INFO 19906 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded track Mezmorized
2023-08-19 14:42:40.015  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : GET /v3/loadtracks?identifier=https%3A%2F%2Fopen.spotify.com%2Ftrack%2F44kFSc9ud98cnHq104T2RL, client=127.0.0.1
2023-08-19 14:43:09.293  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/es47eqctusjcm2q7/players/639211220280541194/?noReplace=false, client=127.0.0.1, payload={"encodedTrack":"QAAA2gIADUJvdXJib24gU2NhcnMADFNldGggQW50aG9ueQAAAAAAAmIaABYyN0hsOFNEcnFBWVRyMEdkeDVkYVNNAAEANWh0dHBzOi8vb3Blbi5zcG90aWZ5LmNvbS90cmFjay8yN0hsOFNEcnFBWVRyMEdkeDVkYVNNAAdzcG90aWZ5AQAMVENBRk4yMTUwNzY0AQBAaHR0cHM6Ly9pLnNjZG4uY28vaW1hZ2UvYWI2NzYxNmQwMDAwYjI3MzVmOWQ2ZTdjYTFlNTgwZmJiMmRmYmMwNgAAAAAAAAAA"}
2023-08-19 14:43:09.480  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/es47eqctusjcm2q7/players/639211220280541194/?noReplace=false, client=127.0.0.1, payload={"encodedTrack":null}
2023-08-19 14:43:09.482  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/es47eqctusjcm2q7/players/639211220280541194/?noReplace=false, client=127.0.0.1, payload={"encodedTrack":"QAAA1gIACk1lem1vcml6ZWQAC1dpeiBLaGFsaWZhAAAAAAAEGl0AFjQ0a0ZTYzl1ZDk4Y25IcTEwNFQyUkwAAQA1aHR0cHM6Ly9vcGVuLnNwb3RpZnkuY29tL3RyYWNrLzQ0a0ZTYzl1ZDk4Y25IcTEwNFQyUkwAB3Nwb3RpZnkBAAxVU1FZNTEwODM5MTMBAEBodHRwczovL2kuc2Nkbi5jby9pbWFnZS9hYjY3NjE2ZDAwMDBiMjczNzhhMTIwOGYyYzc4NDJmNDA5ZWM0NTY4AAAAAAAAAAA="}
2023-08-19 14:43:10.245  INFO 19906 --- [  XNIO-1 task-2] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://open.spotify.com/track/4NupyFIHhuiSZ9t5zWYzDt"
2023-08-19 14:43:10.298  INFO 19906 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded track This Girl (Has Turned into a Woman)
2023-08-19 14:43:10.299  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : GET /v3/loadtracks?identifier=https%3A%2F%2Fopen.spotify.com%2Ftrack%2F4NupyFIHhuiSZ9t5zWYzDt, client=127.0.0.1
2023-08-19 14:43:10.556  INFO 19906 --- [  XNIO-1 task-2] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://open.spotify.com/track/4D3TbGPrpp6Eiql6ugf7n3"
2023-08-19 14:43:10.633  INFO 19906 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded track Swervin'
2023-08-19 14:43:10.634  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : GET /v3/loadtracks?identifier=https%3A%2F%2Fopen.spotify.com%2Ftrack%2F4D3TbGPrpp6Eiql6ugf7n3, client=127.0.0.1
2023-08-19 14:47:38.535  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/es47eqctusjcm2q7/players/639211220280541194/?noReplace=false, client=127.0.0.1, payload={"encodedTrack":"QAAA8gIAI1RoaXMgR2lybCAoSGFzIFR1cm5lZCBpbnRvIGEgV29tYW4pAA5NYXJ5IE1hY0dyZWdvcgAAAAAAAyenABY0TnVweUZJSGh1aVNaOXQ1eldZekR0AAEANWh0dHBzOi8vb3Blbi5zcG90aWZ5LmNvbS90cmFjay80TnVweUZJSGh1aVNaOXQ1eldZekR0AAdzcG90aWZ5AQAMVENBQlUxNDQ0MDY2AQBAaHR0cHM6Ly9pLnNjZG4uY28vaW1hZ2UvYWI2NzYxNmQwMDAwYjI3MzE4MjllYTg1YTZlNmI2MDczOTY0NGJmZgAAAAAAAAAA"}
2023-08-19 14:47:39.569  INFO 19906 --- [  XNIO-1 task-2] l.server.player.AudioLoaderRestHandler   : Got request to load for identifier "https://open.spotify.com/track/2qDTVDLjK4PctCvC8Mg19x"
2023-08-19 14:47:39.632  INFO 19906 --- [ader-2-thread-1] lavalink.server.player.AudioLoader       : Loaded track Diet Coke
2023-08-19 14:47:39.633  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : GET /v3/loadtracks?identifier=https%3A%2F%2Fopen.spotify.com%2Ftrack%2F2qDTVDLjK4PctCvC8Mg19x, client=127.0.0.1
2023-08-19 14:48:09.885  INFO 19906 --- [  XNIO-1 task-2] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/es47eqctusjcm2q7/players/639211220280541194/?noReplace=false, client=127.0.0.1, payload={"encodedTrack":null}
2023-08-19 14:48:09.886  INFO 19906 --- [  XNIO-1 task-1] lavalink.server.io.RequestLoggingFilter  : PATCH /v3/sessions/es47eqctusjcm2q7/players/639211220280541194/?noReplace=false, client=127.0.0.1, payload={"encodedTrack":"QAAA0QIACURpZXQgQ29rZQAHUHVzaGEgVAAAAAAAAr/EABYycURUVkRMaks0UGN0Q3ZDOE1nMTl4AAEANWh0dHBzOi8vb3Blbi5zcG90aWZ5LmNvbS90cmFjay8ycURUVkRMaks0UGN0Q3ZDOE1nMTl4AAdzcG90aWZ5AQAMVVNVTTcyMjAxMjE4AQBAaHR0cHM6Ly9pLnNjZG4uY28vaW1hZ2UvYWI2NzYxNmQwMDAwYjI3M2UyN2RmZWY0Mzg1NjJmMmVjYjk4YTY0MgAAAAAAAAAA"}

image
image

Need information

  1. Is this package support sharding ?
  2. Is this package better then shoukaku ?
  3. Is this package easy to use ?
  4. what the benefits of using this package ?
  5. Is this package like erela.js ?
  6. Is this package has player.set feature like (settings temp data player.set("track", player.queue.current) if i do player.get("track") this will give the info i saved ?
  7. Is this package use high ram usage or not ?

I'm in kind a hurry so can you give the information fast as possible
(my bot is currently using erela.js so its getting tons of ram usage)

Couldn't Find Declaration for Module 'poru'

It is saying that it can not find the module for poru, I am using bun and it is giving me that error. Here is the full error

Could not find a declaration file for module 'poru'. '/home/carter/code/hyperion/node_modules/poru/dist/index.mjs' implicitly has an 'any' type.
There are types at '/home/carter/code/hyperion/node_modules/poru/dist/index.d.ts', but this result could not be resolved when respecting package.json "exports". The 'poru' library may need to update its package.json or typings.

Add more events

Add more events to poru ex-
playerCreate =fire if player created
playerDestory = fire if player get destoryed (is require if user disconnect player from vc or command destory)
playerMove = fire if player moved (is require for if player moved set new voice channel)
add this events soon as possible

Player Connection Create Error

Error

  • Player create connection shows this error (image).

To Reproduce

(I'm unsure but this error happens randomly)

  • Add a random song then add random player filters, then after few time of track end. Disconnect the player. The player join function shows this error.
  • This doesn't work everytime but in most cases like after 5-6 times of randomly playing songs and doing this, shows this error.

Error Image

Image

Expose player volume property

The player volume seems to be not exposed which results in getting Cannot read properties of undefined (reading 'volume') error.
The docs wiki doesn't list the volume property either.

Let me know if you're also going to put it in the next update or if there's some mistake I do.

Search option

Add search option to select node like my 1 lava server on garman and other on us after i connect german lava it give worng results
i want search it on us node so i request add node name option on search function so i can get what i want result

Add data saving method more easy

like current on this repo player.datas = things
add it more easy to get and save like

player.get('datas') or player.data.get('datas') getting data
player.set('datas', things) saveing data
player.delete("datas) deleteing data
like this

change leastusednode option

hello, can you change the leaseusednode option to playercount filter currently it have cpu filtering
on my node 1 it has 100 players
on node 2 on 1 players
there no load balancer at all, can you change the leastusednode

DefaultSearchPlatform

How to do defaultplatform to search, everytime it search ytsearch, im disabled youtube search in lavalink but im idk how to disable it bot side.

Poru Logo/Icon Image Link Expired in Readme

The Logo or Icon Displayed on The Readme it's image link is expired because it's a discord attachment link, Use hosted link or just upload it here in a folder like assets and use it.

Oceanic js Issue

src/Poru.ts:195 needs to be changed to if (guild) guild.shard.send(packet?.op, packet?.d);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.