JSPM

  • Created
  • Published
  • Downloads 214
  • Score
    100M100P100Q36440F
  • License ISC

A simple wrapper for discord music bot.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (niizuki) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    niizuki

    A simple discord music bot wrapper.

    NPM version

    NPM Banner

    Install

    npm install niizuki
    # or
    yarn add niizuki

    Example

    const { Niizuki } = require("niizuki"); // Import niizuki
    
    client.on("ready", async (client) => {
      // defined nodes
      const nodes = [
        {
          name: "localhost",
          host: "",
          password: "",
          port: 2333,
          secure: false,
        },
      ];
    
      // initialize manager
      client.manager = new Niizuki(nodes, {
        send: (payload) => {
          const guild = this.guilds.cache.get(payload.d.guild_id);
          if (guild) guild.shard.send(payload);
        },
        defaultSearchPlatform: "ytmsearch",
        reconnectTimeout: 600000,
        reconnectTries: 1000,
      });
    });
    
    client.on("interactionCreate", async (interaction) => {
      if (slashCmd === "play") {
        const player = client.manager.createConnection({
          guildId: interaction.guild.id,
          voiceChannel: interaction.member.voice.channel.id,
          textChannel: interaction.channel.id,
          deaf: true,
        });
    
        const resolve = await client.niizuki.resolve({
          query: query,
          requester: interaction.user.id,
        });
        const { loadType, tracks, playlistInfo } = resolve;
    
        if (loadType === "track" || loadType === "search") {
          const track = tracks.shift();
          player.queue.add(track);
          interaction.reply(
            `Add [${track.info.title}](${track.info.uri}) to the queue.`
          );
          if (!player.playing && !player.paused) return player.play();
        }
    
        if (loadType === "playlist") {
          for (const track of resolve.tracks) {
            track.info.requester = interaction.user.id;
            player.queue.add(track);
          }
    
          interaction.reply(`Add \`${playlistInfo.name}\` to the queue`);
          if (!player.playing && !player.paused) return player.play();
        } else {
          return interaction.reply("There are no results found.");
        }
      }
    });
    
    client.login("token");
    
    client.manager.on("nodeConnect", async (node) => {
      console.log(`${node.name} is connected.`);
    });
    
    client.manager.on("nodeDisconnect", async (node) => {
      console.log(`${node.name} is disconnected.`);
    });
    
    client.manager.on("trackStart", async (player, track) => {
      const channel = client.channels.cache.get(player.textChannel);
    
      channel.send(
        `Now Playing: [${track.info.title}](${track.info.uri}) [${track.info.requester}]`
      );
    });
    
    client.manager.on("queueEnd", async (player, track) => {
      const channel = client.channels.cache.get(player.textChannel);
    
      let autoPlay = false;
    
      if (autoPlay) {
        player.autoplay(player);
      } else {
        player.destroy();
        channel.send(`The queue has ended`);
      }
    });