muthera
v1.0.4
Published
A simple Lavalink wrapper for Discord music bot. Forked from Niizuki.
Maintainers
Readme
Attribution
This project is forked from the original Niizuki package by LewdHuTao. Since the original project is no longer maintained, this fork continues development and maintenance under the name "Muthera".
Original Author: LewdHuTao
Original Repository: shittybot/niizuki
Current Maintainer: urfavteddybear
Install
npm install muthera
# or
yarn add mutheraExample
const { Muthera } = require("muthera"); // Import muthera
client.on("ready", async (client) => {
// defined nodes
const nodes = [
{
name: "localhost",
host: "",
password: "",
port: 2333,
secure: false,
},
];
// initialize manager
client.manager = new Muthera(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.manager.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`);
}
});
