🌊 REIMAGINING AUDIO STREAMING FOR DISCORD 🌊
Experience crystal-clear audio with unmatched stability
💎 Why Choose Aqualink?
🚀Performance FirstOptimized architecture with 50% less latency than other wrappers |
🛠️Developer FriendlyIntuitive API with extensive documentation and CJS/ESM support |
🔌ExtendablePlugin ecosystem for custom functionality and seamless integration |
🔥 Feature Highlights
![]() Advanced FiltersEQ, Bass Boost, Nightcore & more |
![]() Fail-Safe SystemAuto-reconnect & queue preservation |
![]() Real-time AnalyticsPerformance monitoring & insights |
![]() CustomizableAdapt to your specific needs |
📦 Resources
💻 Quick Start
npm install aqualink
// If you're using Module, use this:
// import { createRequire } from 'module';
// const require = createRequire(import.meta.url);
//const { Aqua } = require('aqualink');
const { Aqua } = require("aqualink");
const { Client, Collection, GatewayDispatchEvents } = require("discord.js");
const client = new Client({
intents: [
"Guilds",
"GuildMembers",
"GuildMessages",
"MessageContent",
"GuildVoiceStates"
]
});
const nodes = [
{
host: "127.0.0.1",
password: "yourpass",
port: 233,
secure: false,
name: "localhost"
}
];
const aqua = Aqua(client, nodes, {
defaultSearchPlatform: "ytsearch",
restVersion: "v4",
autoResume: false,
infiniteReconnects: true,
});
client.aqua = aqua;
client.once("ready", () => {
client.aqua.init(client.user.id);
console.log("Ready!");
});
client.on("raw", (d) => {
if (![GatewayDispatchEvents.VoiceStateUpdate, GatewayDispatchEvents.VoiceServerUpdate,].includes(d.t)) return;
client.aqua.updateVoiceState(d);
});
client.on("messageCreate", async (message) => {
if (message.author.bot) return;
if (!message.content.startsWith("!play")) return;
const query = message.content.slice(6);
const player = client.aqua.createConnection({
guildId: message.guild.id,
voiceChannel: message.member.voice.channel.id,
textChannel: message.channel.id,
deaf: true,
});
const resolve = await client.aqua.resolve({ query, requester: message.member });
if (resolve.loadType === 'playlist') {
await message.channel.send(`Added ${resolve.tracks.length} songs from ${resolve.playlistInfo.name} playlist.`);
for (const track of resolve.tracks) {
player.queue.add(track)
}
if (!player.playing && !player.paused) return player.play();
} else if (resolve.loadType === 'search' || resolve.loadType === 'track') {
const track = resolve.tracks.shift();
track.info.requester = message.member;
player.queue.add(track);
await message.channel.send(`Added **${track.info.title}** to the queue.`);
if (!player.playing && !player.paused) return player.play();
} else {
return message.channel.send(`There were no results found for your query.`);
}
});
client.aqua.on("nodeConnect", (node) => {
console.log(`Node connected: ${node.name}`);
});
client.aqua.on("nodeError", (node, error) => {
console.log(`Node "${node.name}" encountered an error: ${error.message}.`);
});
client.login("Yourtokenhere");
🌟 Featured Projects
300+ weekly downloads • 3+ GitHub stars • 3+ Discord bots
📖 Documentation
For detailed usage, API references, and examples, check out our official documentation:
📌 Get Started Quickly
- Installation guide
- API methods
- Advanced features
- Troubleshooting
🔗 Visit: Aqualink Docs
👑 Premium Bots Using Aqualink
Bot | Invite Link | Features |
---|---|---|
Kenium | Add to Discord | Audio streaming, Discord integration |
Soya Music | Add to Discord | Audio streaming, Discord integration |
🛠️ Advanced Features
🎛️ Audio Filters
|
🔄 Queue Management
|
📊 Monitoring
|
👥 Contributors
pomicee 💻 📖 |
ToddyTheNoobDud 💻 📖 |
SoulDevs <a href="#code-SoulDevs title="Code">💻 |
Become a contributor →
🤝 Contributing
We welcome contributions from developers of all skill levels! Whether it's adding features, fixing bugs, or improving documentation.
💬 Community & Support